




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- “资本下乡”背景下宗族型村庄的非制度性排斥研究-基于山东Z村的实地调查
- 高浓度含锰废水膜电解工艺研究
- 6S现场管理培训
- 校园安全情景剧
- 颅脑护理课件
- 预防食品安全教育课件
- 预防暴雨安全知识课件
- 游戏攻略:幻世录Ⅱ修改教程
- 幼儿园急救培训分享会
- 项链说课课件中职
- 课内外文言文对比阅读专题练(八上)2023年初中语文中考一轮教材复习
- 皮肤科进修后汇报
- 办公楼电气系统改造方案
- 征地拆迁工作整改措施
- GB/T 45089-20240~3岁婴幼儿居家照护服务规范
- 护理参会后汇报
- 铝的基础知识
- 2024年茶楼股份转让合同范文
- 智动全景云负载迁移方案最佳实践(详细版)
- 穴位贴敷治疗呼吸疾病
- XX镇水务中心防汛防风“一页纸”应急预案
评论
0/150
提交评论