7
我的场景中有一个3D对象,此对象的片段着色器接收到具有相同尺寸屏幕的纹理。我想从当前片段获取坐标,并在同一位置找到图像上的颜色信息。这可能吗?有人能指引我走向正确的方向吗?使用GLSL从采样器2D查找特定坐标中的像素颜色
我的场景中有一个3D对象,此对象的片段着色器接收到具有相同尺寸屏幕的纹理。我想从当前片段获取坐标,并在同一位置找到图像上的颜色信息。这可能吗?有人能指引我走向正确的方向吗?使用GLSL从采样器2D查找特定坐标中的像素颜色
片段着色器有一个名为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的浏览器:
我简直不敢相信它是如此容易,非常感谢@emackey ,我一直试图这样做几天。 – 2012-03-01 03:01:48