【发布时间】:2013-09-30 16:52:36
【问题描述】:
如果我使用带有兼容性上下文的 opengl 3.2+ 并且有片段着色器,是否需要有顶点着色器?我想知道每个顶点光照计算和其他每个顶点计算是否可以通过固定函数管道完成,我可以只使用片段着色器。
这对每个顶点属性绑定位置有什么影响?
【问题讨论】:
标签: opengl glsl shader opengl-3 vertex
如果我使用带有兼容性上下文的 opengl 3.2+ 并且有片段着色器,是否需要有顶点着色器?我想知道每个顶点光照计算和其他每个顶点计算是否可以通过固定函数管道完成,我可以只使用片段着色器。
这对每个顶点属性绑定位置有什么影响?
【问题讨论】:
标签: opengl glsl shader opengl-3 vertex
if per vertex 光照计算和其他 per vertex 计算 可以通过固定功能流水线来完成
如果您使用固定的管道灯,它们可以完成。否则,它的一部分(如转换的法线、uv 和位置)必须在传递给片段着色器之前在其他地方计算。这个“其他地方”称为顶点着色器。所以是的,如果你不使用固定的管道闪电系统,你必须使用顶点和片段着色器来处理它。
此外,如果您使用fixed pipeline lightning,您仍然可以使用着色器来访问固定的光照和材质属性。但我认为这样做没有任何意义,除非您希望打破默认行为。
【讨论】:
glTexCoordPointer (...))时,您必须使用关联的GL预先声明的变量在您的顶点着色器中(例如gl_MultiTexCoord0)。将固定函数指针(顶点位置除外,它始终为 0)作为通用顶点属性位置的别名是违反规范的。 NVIDIA 因违反此规范而臭名昭著,但大多数其他供应商都严格执行。