OpenGL学习笔记之法线向量
来源:互联网 发布:3d房屋设计软件 编辑:程序博客网 时间:2024/05/21 10:51
需要注意的地方:
1.使用glTranslate*函数或者glRotate*函数可以改变物体的外观,但法线向量并不会随之改变。然而,使用glScale*函数,对每一坐标轴进行不同程度的缩放,很有可能导致法线向量的不正确,虽然OpenGL提供了一些措施来修正这一问题,但由此也带来了各种开销。因此,在使用了法线向量的场合,应尽量避免使用glScale*函数。即使使用,也最好保证各坐标轴进行等比例缩放。
2.还有一个地方就是,只能给顶点或者多边形定义法线向量,不可以对多边形的的每个指定的地方定义顶点(可能初学者会有所误解,红皮书有明确说明);
法线向量介绍:
根据光的反射定律,由光的入射方向和入射点的法线就可以得到光的出射方向。因此,对于指定的物体,在指定了光源后,即可计算出光的反射方向,进而计算出光照效果的画面。在OpenGL中,法线的方向是用一个向量来表示。
不幸的是,OpenGL并不会根据你所指定的多边形各个顶点来计算出这些多边形所构成的物体的表面的每个点的法线(这话听着有些迷糊),通常,为了实现光照效果,需要在代码中为每一个顶点指定其法线向量。
指定法线向量的方式与指定颜色的方式有雷同之处。在指定颜色时,只需要指定每一个顶点的颜色,OpenGL就可以自行计算顶点之间的其它点的颜色。并且,颜色一旦被指定,除非再指定新的颜色,否则以后指定的所有顶点都将以这一向量作为自己的颜色。在指定法线向量时,只需要指定每一个顶点的法线向量,OpenGL会自行计算顶点之间的其它点的法线向量。并且,法线向量一旦被指定,除非再指定新的法线向量,否则以后指定的所有顶点都将以这一向量作为自己的法线向量。使用glColor*函数可以指定颜色,而使用glNormal*函数则可以指定法线向量。
- OpenGL学习笔记之法线向量
- 《高效学习OpenGL》之法线向量与顶点数组 glNormal3f(), glEnableClientState(), glVertexPointer(), glDrawArrays()
- 《高效学习OpenGL》之法线向量与顶点数组 glNormal3f(), glEnableClientState(), glVertexPointer(), glDrawArrays()
- OpenGL核心技术之法线贴图
- 法线向量
- 现代OpenGL+Qt学习笔记之十一:使用halfway向量提高光照计算效率
- 【Unity Shaders】学习笔记之法线贴图(七)
- OpenGL法线
- OpenGL学习笔记之配置OpenGL
- OpenGL学习笔记之了解OpenGL
- OpenGL学习笔记之Buffers
- Opengl学习笔记之Textures
- OPENGL学习笔记之二
- OPENGL学习笔记之三
- OPENGL学习笔记之四
- OPENGL学习笔记之五
- OPENGL学习笔记之六
- OPENGL学习笔记之七
- MySql简要笔记
- codeforces 498 d Traffic Jams in the Land
- Web Server 架构浅谈-Simple Event-Driven Achitecture
- 音视频即时通讯开发
- 根据HiMi的写的android摇杆
- OpenGL学习笔记之法线向量
- 限制性与非限制性定语从句区别
- Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
- 利用JDBC连接Oracle数据库
- requirejs初次接触
- Mustache.js前端模板引擎源码解读【一】
- Web Server 架构浅谈-Staged Event-Driven Achitecture(SEDA)
- HDOJ 题目1905 Pseudoprime numbers(快速幂)
- ScrollView can host only one direct child