如何获得具有顶点世界位置的vec3?
假设我想在世界空间的Y 1处获得立方体位置的白色像素,为0的黑色像素获得白色像素...
我试过
(顶点着色器)
[...]
varying float whiteness;
[...]
vec4 posWorld = gl_ProjectionMatrix * gl_Vertex;
whiteness = clamp(posWorld.y,0.0,1.0);
[...]
(片段着色器)
[...]
varying float whiteness;
[...]
gl_FragColor.rgb = vec3(whiteness);
[...]
但这给了我奇怪的结果,表面仍然取决于相机的角度和高度。
如何才能获得世界空间x,y,z中的顶点位置?
答案 0 :(得分:1)
了解点如何从本地空间转换为屏幕坐标。
worldMatrix * vertex = worldSpace
viewMatrix * worldSpace = viewSpace
projectionMatrix * viewSpace = screenSpace
如果你想获得顶点的位置,你应该将World Matrix传递给着色器并将顶点乘以该顶点。
vec4 posWorld = worldMatrix * gl_Vertex;