WebGL:如何获取片段着色器中每个像素的位置?

时间:2013-06-27 09:12:01

标签: html5 opengl-es webgl

我知道我可以使用gl_Position来获取每个顶点的位置,但是如果可以在片段着色器中获取每个像素的位置?

我想更改某个像素区域的alpha值。

1 个答案:

答案 0 :(得分:11)

vec2 gl_FragCoord

它将以像素为单位返回屏幕上片段的位置。 如果您传递统一vec2 screenResolution,那么您可以使用这两个值来确定屏幕上的确切位置,像素,哪个部分等。

这是一个内置变量,因此您可以在片段着色器中随时使用它。

以下是一个用于演示的示例:http://goo.gl/AG7UO

如果你想要片段的woorld坐标,那么你应该使用varying变量。

顶点着色器:

varying vec3 vPos;
attribute vec3 aVertexCoord;
uniform mat4 uMVMat;
uniform mat4 uProjMat;

void main() {
    vPos = uMVMat * aVertexPos;
    gl_Position = uProjMat * vPos;
}

片段着色器:

varying vec3 vPos;
void main() {
    // do something
}

希望这有帮助。