TA的每日心情 | 开心 2019-11-11 10:36 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
本节大意:顶点着色器是完全替代渲染管线中的顶点处理阶段的,也就是说你一旦写了vertex shader,渲染管线就不会再处理以前在顶点处理阶段的任务了。
GLSL教程
译:FreeSouth
顶点处理
顶点着色器(vertex shaders)基于顶点处理阶段。顶点着色器的输入为顶点数据,一般为位置,颜色,法线等等,该数据依赖于OpenGL程序的输入。
下面这段OpenGL程序描述了顶点处理器依次处理顶点的位置和颜色。
________________________________________
glBegin(...);
glColor3f(0.2,0.4,0.6);
glVertex3f(-1.0,1.0,2.0);
glColor3f(0.2,0.4,0.8);
glVertex3f(1.0,-1.0,2.0);
glEnd();
________________________________________
在顶点着色器(vertex shader)中,你可以写代码完成以下工作:
 --顶点的位置变换
 --规范化处理
 --纹理坐标的产生和变换
 --为各顶点计算光照
 --为顶点着色
没有必要非要执行全部的以上操作,比如你不想使用光照。但是,一旦你写了一个顶点着色器(vertex shader),你就会替掉整个渲染管线中的顶点处理阶段,因此,你不能只写写法线变换指望它利用渲染管线的顶点处理还给你生成什么纹理坐标。
顶点处理阶段处理的仅仅是顶点的信息,和顶点之间的组织方式等等无任何关联。比如你不能使用顶点着色器(vertex shader)去搞什么背面剔除,因为顶点着色器操作的是顶点而不是面。顶点着色器操作的除了顶点还是顶点,没有其它的东西。
顶点着色器必须处理位置信息,处理位置信息的手段经常是利用顶点模视矩阵(是将模型从局部坐标系变换到世界坐标系,并最终变换到视点坐标系中)和投影矩阵。
顶点处理阶段可以使用OpenGL的状态机制,所以可以处理光照以及材质和纹理(仅在最新的硬件中支持)。但是他无权操作帧缓存。
原文地址:http://www.lighthouse3d.com/opengl/glsl/index.php?vertexp
顶点处理.pdf
(151.83 KB, 下载次数: 1020)
|
|