版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、E.g1第一个OpenGL程序#include <GL/glut.h>void myDisplay(void) glClear(GL_COLOR_BUFFER_BIT); glRectf(-0.5f, -0.5f, 0.5f, 0.5f); glFlush();int main(int argc, char *argv) glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(100, 100); glutInitWindowSize(400, 40
2、0); glutCreateWindow("第一个OpenGL程序"); glutDisplayFunc(&myDisplay); glutMainLoop(); return 0;E.g.2画圆#include <math.h>const int n = 20;const GLfloat R = 0.5f;const GLfloat Pi = 3.1415926536f;void myDisplay(void) int i; glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); for(i=0; i<
3、;n; +i) glVertex2f(R*cos(2*Pi/n*i), R*sin(2*Pi/n*i); glEnd(); glFlush();E.g.3正弦函数#include <math.h>const GLfloat factor = 0.1f;void myDisplay(void) GLfloat x; glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINES); glVertex2f(-1.0f, 0.0f); glVertex2f(1.0f, 0.0f); / 以上两个点可以画x轴 glVertex2f(0.0f, -1.0f);
4、glVertex2f(0.0f, 1.0f); / 以上两个点可以画y轴 glEnd(); glBegin(GL_LINE_STRIP); for(x=-1.0f/factor; x<1.0f/factor; x+=0.01f) glVertex2f(x*factor, sin(x)*factor); glEnd(); glFlush();E.g.4五角星#include <GL/glut.h>#include <math.h>const GLfloat Pi = 3.1415926536f;void myDisplay(void) GLfloat a = 1 /
5、 (2-2*cos(72*Pi/180); GLfloat bx = a * cos(18 * Pi/180); GLfloat by = a * sin(18 * Pi/180); GLfloat cy = -a * cos(18 * Pi/180); GLfloat PointA2 = 0, a , PointB2 = bx, by , PointC2 = 0.5, cy , PointD2 = -0.5, cy , PointE2 = -bx, by ; glClear(GL_COLOR_BUFFER_BIT); / 按照A->C->E->B->D->A的顺
6、序,可以一笔将五角星画出 glBegin(GL_LINE_LOOP);glVertex2fv(PointA);glVertex2fv(PointC);glVertex2fv(PointE);glVertex2fv(PointB); glVertex2fv(PointD); glEnd(); glFlush();E.g.5线型#include <GL/glut.h>void myDisplay(void) glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_LINE_STIPPLE); glLineStipple(2, 0x0F0F); glLineW
7、idth(10.0f); glBegin(GL_LINES); glVertex2f(0.0f, 0.0f); glVertex2f(0.5f, 0.5f); glEnd(); glFlush();E.g.6镂空多边形#include <GL/glut.h>#include <stdio.h>#include <stdlib.h>void myDisplay(void)/*static GLubyte Mask128 = 0x00, 0x00, 0x00, 0x00, / 这是最下面的一行 0x00, 0x00, 0x00, 0x00, 0x03, 0x80
8、, 0x01, 0xC0, / 麻 0x06, 0xC0, 0x03, 0x60, / 烦 0x04, 0x60, 0x06, 0x20, / 的 0x04, 0x30, 0x0C, 0x20, / 初 0x04, 0x18, 0x18, 0x20, / 始 0x04, 0x0C, 0x30, 0x20, / 化 0x04, 0x06, 0x60, 0x20, / , 0x44, 0x03, 0xC0, 0x22, / 不 0x44, 0x01, 0x80, 0x22, / 建 0x44, 0x01, 0x80, 0x22, / 议 0x44, 0x01, 0x80, 0x22, / 使 0x
9、44, 0x01, 0x80, 0x22, / 用 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC, 0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30, 0x07, 0xE1, 0x87, 0xE0, 0x03, 0x3F, 0xFC, 0xC0, 0x03, 0x31, 0x8C, 0xC0, 0x03, 0x3F, 0xFC, 0xC0, 0x06, 0x64, 0x26, 0x60, 0x0C, 0xCC
10、, 0x33, 0x30, 0x18, 0xCC, 0x33, 0x18, 0x10, 0xC4, 0x23, 0x08, 0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0C, 0x08, 0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08 / 这是最上面的一行;*/ static GLubyte Mask128; FILE *fp; fp = fopen("D:/Mask/Mask.bmp", "rb"); /注意此处的格式 fp = fopen("D:/vclx/mas
11、k.bmp", "rb"); if( !fp ) exit(0); if( fseek(fp, -(int)sizeof(Mask), SEEK_END) ) exit(0); if( !fread(Mask, sizeof(Mask), 1, fp) ) exit(0); fclose(fp); glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_POLYGON_STIPPLE); glPolygonStipple(Mask); glRectf(-0.5f, -0.5f, 0.0f, 0.0f); / 在左下方绘制一个有镂空效果的
12、正方形 glDisable(GL_POLYGON_STIPPLE); glRectf(0.0f, 0.0f, 0.5f, 0.5f); / 在右上方绘制一个无镂空效果的正方形 glFlush();E.g.7着色模型#include <GL/glut.h>#include <math.h>const GLdouble Pi = 3.1415926536;void myDisplay(void) int i; / glShadeModel(GL_FLAT); / glShadeModel(GL_SMOOTH); glClear(GL_COLOR_BUFFER_BIT); g
13、lBegin(GL_TRIANGLE_FAN); glColor3f(1.0f, 1.0f, 1.0f); glVertex2f(0.0f, 0.0f); for(i=0; i<=8; +i) glColor3f(i&0x04, i&0x02, i&0x01); glVertex2f(cos(i*Pi/4), sin(i*Pi/4); glEnd(); glFlush();E.g.8 #include "stdafx.h"#include <GL/glut.h>static int day = 180; / day的变化:从0到35
14、9void myDisplay(void) glEnable(GL_DEPTH_TEST); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(75, 1, 1, 400000000); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0, -200000000, 200000000, 0, 0, 0, 0, 0, 1); / 绘制红色的"太阳&
15、quot; glColor3f(1.0f, 0.0f, 0.0f); glutSolidSphere(69600000, 200, 200); / 绘制蓝色的"地球" glColor3f(0.0f, 0.0f, 1.0f); glRotatef(day/360.0*360.0, 0.0f, 0.0f, -1.0f); glTranslatef(150000000, 0.0f, 0.0f); glutSolidSphere(15945000, 20, 20); / 绘制黄色的"月亮" glColor3f(1.0f, 1.0f, 0.0f); glRotat
16、ef(day/30.0*360.0 - day/360.0*360.0, 0.0f, 0.0f, -1.0f); glTranslatef(38000000, 0.0f, 0.0f); glutSolidSphere(4345000, 20, 20); glFlush();void keyboard(unsigned char key,int x,int y) switch (key) case 'f' : day =day +5; glutPostRedisplay(); break; case 'b': day =day -5; glutPostRedisp
17、lay(); break; default: break; int main(int argc, char* argv)glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(100, 100); glutInitWindowSize(400, 400); glutCreateWindow("第一个OpenGL程序"); glutDisplayFunc(&myDisplay);glutKeyboardFunc(keyboard); g
18、lutMainLoop();return 0;E.g.9机器人手臂#include "stdafx.h"#include <GL/glut.h>static int shoulder =0,elbow =0; void init(void) glClearColor(0.0,0.0,0.0,0.0); glShadeModel(GL_FLAT); void display(void) glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glTranslatef(-1.0,0.0,0.0); glRotatef(GLfloa
19、t)shoulder,0.0,0.0,1.0); glTranslatef(1.0,0.0,0.0); glPushMatrix(); glScalef(2.0,0.4,1.0); glutWireCube(1.0); glPopMatrix(); glTranslatef(1.0,0.0,0.0); glRotatef(GLfloat)elbow,0.0,0.0,1.0); glTranslatef(1.0,0.0,0.0); glPushMatrix(); glScalef(2.0,0.4,1.0); glutWireCube(1.0); glPopMatrix(); glPopMatri
20、x(); glutSwapBuffers(); void reshape(int w,int h) glViewport(0,0,(GLsizei)w,(GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(65.0,(GLfloat)w/(GLfloat)h,1.0,20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0,0.0,-5.0); void keyboard(unsigned char key,int x,int y) switch (key) case 's' :/*s key rotates at shoulder */ shoulder =(shoulder +5)%360; glutPostRedisplay(); break; case 'S': shoulde
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川成都市简阳市射洪坝沱江幼儿园公益性岗位招聘1人备考题库附答案详解(精练)
- 2026四川甘孜州泸定县国有林保护管理局、甘孜州民生人力资源管理有限公司联合招聘2人备考题库附答案详解(研优卷)
- 2026四川甘孜州泸定县国有林保护管理局、甘孜州民生人力资源管理有限公司联合招聘2人备考题库附答案详解(模拟题)
- 2026四川成都经开建工集团有限公司招聘项目制工作人员6人备考题库及答案详解(网校专用)
- 2025年执业药师之中药学专业一真题附答案
- 传染病房安全保卫制度
- 地测科奖惩制度
- 财务制度备案的负责人
- 食品安全示范县创建制度
- 安全等级保护制度的要求
- 2026年广东高考数学卷及答案
- 2026年高端化妆品市场分析报告
- 2025年中国铁路南宁局招聘笔试及答案
- 2024年内蒙古交通职业技术学院单招职业技能考试题库附答案解析
- 2025年学校领导干部民主生活会“五个带头”对照检查发言材料
- 机台故障应急预案(3篇)
- 2025年轻型民用无人驾驶航空器安全操控(多旋翼)理论备考试题及答案
- 华为手机品牌营销策略研究毕业论文
- 景区服务培训课件
- 2025年深圳低空经济中心基础设施建设研究报告
- 中科曙光入职在线测评题库
评论
0/150
提交评论