使用GLSL从sampler2D中查找特定坐标中的像素颜色

时间:2012-02-29 20:53:44

标签: opengl glsl fragment-shader

我的场景中有一个3D对象,此对象的片段着色器接收到与屏幕大小相同的纹理。我想从当前片段中获取坐标,并在同一位置找到图像上的颜色信息。这可能吗?有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:12)

片段着色器有一个名为gl_FragCoord的内置值,它提供目标片段的像素坐标。您必须将其除以视口的宽度和高度,以获取查找的纹理坐标。这是一个简短的例子:

uniform vec2 resolution;
uniform sampler2D backbuffer;

void main( void ) {
    vec2 position = ( gl_FragCoord.xy / resolution.xy );
    vec4 color = texture2D(backbuffer, position);
    // ... do something with it ...
}

有关完整的工作示例,请在支持WebGL的浏览器中尝试:

http://glslsandbox.com/e#375.15