随笔-38  评论-23  文章-0  trackbacks-0

在这一课当中,我将会学到如何使用光照,如何使用键盘控制,其次还增加两种纹理映射的滤波方式.而主要内容将会放在光照上.

为了在场景中增加光照,需要执行下面的这些步骤:

1.  定义每个物体的每个顶点的法线向量.这些法线决定了物体相对于光源的方向
     glNormal3f()   //这是这节课当中必须用得到的 指定方向方向

2.  创建或选择一个或多个光源,并设置他们的位置
     glLightfv()  //这个函数将会创建某号光源,并设置它的一些属性,如环境光强度,漫反射光强度,及位置等.
     光强度其实也是类似颜色值的四个分量组成的...R G B A
3. 创建或选择一种光照模型,它定义了全局环境光的层次以及观察点的有效位置(便于进行光照计算).
    而该Lesson当初我们并为用到这个函数 glLightModelfv() .因为在opengl当中其实许多值都是具有默认值的.

4. 定义场景中的物体的材料属性
    glMaterialfv()  //这课当中我们也没有用到.
5. 启用创建的光源,启用光照..
    glEnable(光源号)  
    glEnable(GL_LIGHTING)  //这个则是关键.只有启用它才能达到启用光照的效果.

glut 当中负责处理键盘事件注册的有两个函数glutSpecialFunc() 负责处理特殊按键,glKeyboardFunc() 负责处理普通按键.故而在键盘处理事件当中我们只需在这些事情函数中写入相关代码就行.

而其他的内容我只是全部在将在代码注释当中给出 

Code


最后实现的效果图如下所示:


末尾总结:

熟悉了光照的配置,以及键盘函数处理的一些功能.其次我在读取纹理过程当中发现了以个bug..使用win API 并不能读取 8-bit的bmp格式图像..所以相对于读取文件其实也应当是个麻烦的事情..



posted on 2009-07-26 14:21 米游 阅读(465) 评论(0)  编辑 收藏 引用 所属分类: OpenGL/OSG

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理