为什么不用vec3来处理OpenGL ES 2.0 gl

我是OpenGL ES 2.0的新手,无法理解以下最简单的着色器:

attribute vec4 vPosition;
void main()
{
   gl_Position = vPosition;
}

我的问题是,由于位置是(x, y, z)的向量,为什么gl_Position是vec4而不是vec3?


vec4(x,y,z,w)中的w用于剪切,并在线性代数转换应用于位置时发挥作用。

默认情况下,它应该设置为1.0。

请参阅这里了解更多信息: http ://web.archive.org/web/20160408103910/http: //iphonedevelopment.blogspot.com/2010/11/opengl-es-20-for-iOS-chapter-4.html


如果直接在剪辑空间中将顶点提供给着色器,则只需传递x,y,z并在该着色器中添加1作为w组件。

attribute vec3 vPosition; // vec3 instead of vec4
void main()
{
   gl_Position = vec4 (vPosition, 1.0);
}
链接地址: http://www.djcxy.com/p/33601.html

上一篇: Why not vec3 for OpenGL ES 2.0 gl

下一篇: Cannot get samplerCube / textureCube to work in OpenGL ES 2.0 (Android)