pet*_*ter 30 shader opengl-es-2.0
我是OpenGL ES 2.0的新手,无法理解以下最简单的着色器:
attribute vec4 vPosition;
void main()
{
gl_Position = vPosition;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,因为一个位置是一个向量(x, y, z),为什么gl_Position是vec4而不是vec3?
Mat*_*uyn 25
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11940 次 |
| 最近记录: |