2012-03-30 41 views
25

我是新来的OpenGL ES 2.0,而无法理解以下简单的着色器:为什么不用vec3 for OpenGL ES 2.0 gl_Position?

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

我的问题是,既然一个位置将是(x, y, z)载体,为什么GL_POSITION一个vec4代替VEC3?

+0

在这个线程中的一些很好的解释:http://www.gamedev.net/topic/506162-3d-math-4-component-vectors/ – Tim 2012-03-30 16:38:49

回答

3

如果您提供的顶点直接剪裁空间着色器,你可以只通过X,Y,Z和添加1作为在着色器w成分。

attribute vec3 vPosition; // vec3 instead of vec4 
void main() 
{ 
    gl_Position = vec4 (vPosition, 1.0); 
}