



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
茶壶的生成1. 配置环境:在编程之前需要加头文件.步骤:1. ylut.h复制到C:program FilesMicrosoftvisual studioVC98includeGL2. glut32.lib复制C: program FilesMicrosoftvisual studioVC98lib3. glut32.dlb复制C: windowssystem32 4. 如何把lib库文件添加到项目中 在原来的VC6开发环境中,点击菜单的project-setting,弹出项目属性对话框,然后点选link选项卡,在里面的Object/Library Modules输入要加入的lib文件名即可。2. 程序代码:/ chahu.cpp : author wangnina/studentnumber:201396052043 赵燕#include stdafx.h#include #include static double speed= 18.0; void init() /初始化背景颜色,光照,材质等 glClearColor(0.9,0.9,1,1.0); /初始背景色 /* 光照处理 */ GLfloat light_ambient = 0.0, 0.0, 0.0, 1.0 ;GLfloat light_diffuse = 1.0, 1.0, 1.0, 1.0 ;GLfloat light_specular = 1.0, 1.0, 1.0, 1.0 ;GLfloat light_position0 = 3.0, 1.0, 1.0 ,1.0 ; /定义光位置得齐次坐标(x,y,z,w),如果w=1.0,为定位光源(也叫点光源),/如果w0,为定向光源(无限光源),定向光源为无穷远点,因而产生光为 /平行光。 glLightfv(GL_LIGHT0, GL_AMBIENT , light_ambient ); /环境光 glLightfv(GL_LIGHT0, GL_DIFFUSE , light_diffuse ); /漫射光 glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); /镜面反射 glLightfv(GL_LIGHT0, GL_POSITION, light_position0); /光照位置 /* 材质处理 */ GLfloat mat_ambient = 0.0, 0.2, 1.0, 1.0 ;GLfloat mat_diffuse = 0.8, 0.5, 0.2, 1.0 ; GLfloat mat_specular = 1.0, 1.0, 1.0, 1.0 ;GLfloat mat_shininess = 100.0 ; /材质RGBA镜面指数,数值在0128范围内 glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glEnable(GL_LIGHTING); /启动光照 glEnable(GL_LIGHT0); /使第一盏灯有效 glEnable(GL_DEPTH_TEST); /测试深度缓存 /* 其他可选项 */ / glDepthFunc(GL_LESS); /函数指定比较函数,用来比较每个引入象素的z值和深度缓存中给定的z值,只有当/激活深度检验时才执行此比较。 / glEnable(GL_CULL_FACE); /剔除多边形表面:在三维空间中,一个多边形虽然有两个面,但我们无法看见背/面的那些多边形,而一些多边形虽然是正面的,但被其他多边形所遮挡。如果将/无法看见的多边形和可见的多边形同等对待,无疑会降低我们处理图形的效率。/在这种时候,可以将不必要的面剔除。/ glCullFace(GL_FRONT); /glCullFace的参数可以是GL_FRONT,GL_BACK或者GL_FRONT_AND_BACK,分别表示/剔除正面、剔除反面、剔除正反两面的多边形。/ glEnable(GL_COLOR_MATERIAL); /材质颜色追踪当前颜色 static void Reshape(int width, int height)const float ar = (float) width / (float) height;glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); /对投影矩阵堆栈应用随后的操作。 glLoadIdentity();glFrustum(-ar, ar, -1.0, 1.0, 2.0, 10.0);glMatrixMode(GL_MODELVIEW); /对模型矩阵堆栈应用随后的操作。/glMatrixMode(GL_TEXTURE); /对纹理矩阵应用随后的操作。 glLoadIdentity(); static void key(unsigned char key, int x, int y)switch (key) case 27 : case q:exit(0);break; /按ESC键(ASCII码为27)和q键为退出 case +: /按+和-分别为增加和降低转速 if(speed1)speed=speed-1.0;break;case -:speed=speed+1.0;break; /glutPostRedisplay(); static void idle(void)glutPostRedisplay(); /标记当前窗口图象层需要重新绘制,在glutMainLoop()的事件处理循环的下一个/反复中,将调用该窗口的显示回调函数重新绘制该图层。 static void display(void)const double angle = glutGet(GLUT_ELAPSED_TIME)/speed; /调用glutInit函数后运行的时间,或者是第一次调用glutGet(GLUT_ELAPSED_TIME)/后运行的时间。 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix();glTranslated(0.0,0.0,-4.0);glRotated(angle,1,1,0);glutSolidTeapot(1.0);glPopMatrix();/glFlush();glutSwapBuffers(); /函数交换当前窗口的使用层的缓存,它将后台缓存中的内容交换到前台缓存中/如果不是使用双缓存结构的,则glutSwapBuffers()不起任何作用。 int main(int argc, char *argv)glutInit(&argc, argv);glutInitWindowSize(800,600);glutInitWindowPosition(0,0);glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);/指定RGBA模式窗口,双缓存,深度缓存 glutCr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年生物质能源分布式能源系统应用中的能源市场前景与优化布局报告
- 大学音乐鉴赏活动方案策划
- 数学教材模拟试题及答案
- DB65T 4361-2021 设施杏鲍菇高效栽培技术规程
- 药店员工专业试题及答案
- 腭裂术后应急预案(3篇)
- 暖通专业考试试题及答案
- 语文专业考试题目及答案
- DB65T 4509-2022 核桃大蒜间作技术规程
- 电力应急项目预案(3篇)
- 2025年全国医学基础知识试题(附答案)
- 食堂安全培训课件
- 【课件】角的概念+课件+2025-2026学年人教版(2024)七年+数学级上册+
- 2025企业劳动合同范本新版
- 2025年防雷检测专业技术人员能力认定考试题库及答案
- 《房屋市政工程生产安全重大事故隐患判定标准(2024版)》解读
- 美发裁剪理论知识培训课件
- 舞蹈老师自我介绍课件
- 2025年吉林省教育系统校级后备干部选拔考试题及答案
- 社区安全知识培训资料课件
- 徐学义基础地质调查课件
评论
0/150
提交评论