OPENGL光照绘制

OPENGL光照绘制

ID:40232695

大小:118.50 KB

页数:17页

时间:2019-07-27

OPENGL光照绘制_第1页
OPENGL光照绘制_第2页
OPENGL光照绘制_第3页
OPENGL光照绘制_第4页
OPENGL光照绘制_第5页
资源描述:

《OPENGL光照绘制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、OPENGL光照模型绘制2在使用光照之前Jet.cpp程序功能:(1)用几个三角形组成简单的飞机模型(2)对这些三角形设置不同的颜色注意键盘的操作(1)在main之前定义函数voidSpecialKeys(intkey,intx,inty)(2)在main中glutSpecialFunc(SpecialKeys);(3)定义全局变量staticGLfloatxRot=0.0f;staticGLfloatyRot=0.0f;(4)在SpecialKeys函数中根据键盘的方向键修改xRot和yRot的值,并最后调用glutPostRedisplay();来通知操作系统重绘显

2、示窗口(5)在绘制时,使用xRot和yRot来控制三维物体的转向另一个颜色函数glColor3ub(255,255,255);OPENGL中函数的定义方式:glColor是函数主名,但是对应所支持的输入不同,函数名会有所变化glColor3f,glColor3ub等,可以通过MSDN查看所有对应的函数voidglColor3ub(GLubytered,GLubytegreen,GLubyteblue);取值范围0-255voidglColor3f(GLfloatred,GLfloatgreen,GLfloatblue);取值范围0.0f-1.0fvoidglColor3

3、fv(constGLfloat*v);输入一个float数组开启光照在voidSetupRC()中添加开启光照的语句glEnable(GL_LIGHTING);观察变化效果,此时颜色失效因为此时未对场景中的光照进行设置设置环境光GLfloatambientLight[]={1.0f,1.0f,1.0f,1.0f};glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambientLight);设置了一个最亮的环境光源,但是此时仍然看不到物体的本来颜色,这是因为还未对物体设置材料属性设置材料属性设置材料属性有两种方式(1)对每个面片设置材料属性GL

4、floatgray[]={0.75f,0.75f,0.7f,1.0f};glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,gray);OPENGL的状态保持机制,在第二次设置之前所有绘制的物体都使用这种材料属性,这种方式几乎必须对每个面片设置材料属性,而且使对物体颜色的设置无效。(2)使用颜色追踪glEnable(GL_COLOR_MATERIAL);glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);推荐使用这种方式,因为可以让OPENGL根据用户的颜色设定来自动确定材料属性,相对方

5、便模拟天变亮变暗如果不进行交互的话,环境光设置可在voidSetupRC()中进行,也可以在voidRenderScene(void)中进行但是如果要求进行交互的话,则必须在voidRenderScene(void)中进行环境光设置增加对环境光亮度的交互控制(1)增加全局变量staticGLfloatambientLight[]={1.0f,1.0f,1.0f,1.0f};staticGLfloatstrength=1.0f;(2)在voidSpecialKeys(intkey,intx,inty)中增加对按键的响应操作,对应方式为PgUp键控制变亮,PgDn键控制变暗

6、,代码如下:if(key==GLUT_KEY_PAGE_UP)strength+=0.1f;if(key==GLUT_KEY_PAGE_DOWN)strength-=0.1f;if(strength>1.0f)strength=1.0f;if(strength<0.0f)strength=0.0f;关于GLUT预设置的按键可查看glut.h文件(3)在voidRenderScene(void)中添加如下代码:ambientLight[0]=strength*1.0f;ambientLight[1]=strength*1.0f;ambientLight[2]=streng

7、th*1.0f;glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambientLight);使用散射光源给场景增加另一个光源在voidSetupRC()中增加如下代码:GLfloatambientLight1[]={0.3f,0.3f,0.3f,1.0f};GLfloatdiffuseLight1[]={0.7f,0.7f,0.7f,1.0f};glLightfv(GL_LIGHT0,GL_AMBIENT,ambientLight1);glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。