如果您将不同的视图空间位置从顶点着色器传递给片段着色器,那么片段着色器可以知道片段相对于相机的位置(0,0,0
在视图空间中)。这对于每像素照明等很有用。例如:
precision mediump float;
attribute vec3 vertex;
uniform mat4 pMatrix, mvMatrix;
varying vec4 pos;
void main() {
pos = (mvMatrix * vec4(vertex,1.0));
gl_Position = pMatrix * pos;
}
但是,如果您在顶点着色器中进行渲染gl_POINTS
和设置gl_PointSize
,片段着色器如何确定每个片段的位置(因为在pos
上面的示例中传递的将是精灵的中心点)?