版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 按揭购房贷款合同范本
- 展览宣传活动合同
- 企业资产抵押贷款合同
- 2024购车协议书合同范本
- 批量购房合同协议
- 2024企业员工劳动合同样本
- 企业资产买卖合同模板
- 房屋转让协议标准合同范本
- 2024建设施工合同有些分类
- 2024公司股权转让及后续合伙经营合同
- 公司组织架构图模板课件
- 辽宁省葫芦岛市各县区乡镇行政村村庄村名居民村民委员会明细
- 植物种子的传播方式课件
- 电缆敷设施工方案及安全措施
- 百合干(食品安全企业标准)
- 肺血栓栓塞症临床路径(县级医院版)
- 国开成本会计第10章综合练习试题及答案
- 《西游记》-三打白骨精(剧本台词)精选
- T∕CSCS 012-2021 多高层建筑全螺栓连接装配式钢结构技术标准-(高清版)
- 充电站项目合作方案-高新
- 急诊科临床诊疗指南-技术操作规范更新版
评论
0/150
提交评论