2

如何获得具有顶点世界位置的 vec3?

假设我想为世界空间中 Y 1 处的立方体位置获取白色像素,为 0 获取黑色像素……</p>

我试过了

(顶点着色器)

[...]

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中的顶点位置?

4

1 回答 1

1

了解点如何从其本地空间转换为屏幕坐标。

worldMatrix * vertex = worldSpace

viewMatrix * worldSpace = viewSpace

projectionMatrix * viewSpace = screenSpace

如果您希望获得顶点的位置,您应该将 World Matrix 传递到着色器并将顶点乘以该值。

vec4 posWorld = worldMatrix * gl_Vertex;
于 2013-06-09T16:37:21.360 回答