版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深圳市2025年3月广东深圳市福田区莲花街道办事处招聘场馆管理岗5人笔试历年参考题库典型考点附带答案详解
- 河南省2025年中化地质矿山总局河南地质局(中化地质河南局集团有限公司)人才招聘笔试历年参考题库典型考点附带答案详解
- 汾阳市2025山西吕梁汾阳市事业单位招才引智44人笔试历年参考题库典型考点附带答案详解
- 武汉市2025湖北武汉设计工程学院(红安校区)现代教育技术中心工作人员招聘笔试历年参考题库典型考点附带答案详解
- 桂平市2025广西贵港市桂平市大数据发展和政务局招聘1名编外人员笔试历年参考题库典型考点附带答案详解
- 新余市2025江西新余市事业单位招聘111人笔试历年参考题库典型考点附带答案详解
- 2025-2026学年英语教案导入
- 生产部门年工作总结(8篇)
- 深海电影观后感3篇
- 砌体房屋地下室结构构造设计书
- 福建泉州市2025-2026学年下学期期末高二数学参考试题答案
- 九江市液化石油气公司九江经营分公司2026年面向社会公开招聘工作人员【13人】笔试参考题库及答案详解
- 2026广东广州花都汽车城集团有限公司第一次招聘6人参考题库【综合卷】附答案详解
- 2026国家中铝国际工程股份有限公司纪委工作部(巡察办公室)副主任岗位竞争上岗1人笔试历年难易错考点试卷带答案解析
- 太原市2026届小学六年级小升初英语模拟试卷2
- 2026年安全生产月100张看图找隐患详解(可编辑版)
- 精装修成品保护施工方案与措施
- 2026北京外国语大学纪检监察岗位招聘建设笔试模拟试题及答案解析
- 中国主动脉夹层诊疗指南(2025版)
- 7.3 云南省(课件42张)- 星球版地理八年级下册
- 肺气肿的课件
评论
0/150
提交评论