繁体   English   中英

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

[英]WebGL: How do I get the position of every pixel in fragment shader?

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

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

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
}

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM