texelFetch的替代方案?

时间:2011-12-27 04:22:16

标签: opengl glsl sfml

我正在进入GLSL并需要一些纹理查找帮助。我正在尝试使用纹理进行存储,但我无法获得“正确”的纹理查找。我更喜欢使用通常的texture2D方法(使用GLSL 1.2),但结果不够好。

使用texture2D: one

使用texelFetch: two

现在很明显第一个出了问题。这是我想要做的事情(是的,大小是正确的,除非有一些我不知道的事情):

vec4 texelFetch(sampler2D tex, ivec2 size, ivec2 coord)
{
    return texture2D(tex, vec2(float(coord.x) / float(size.x), 
                               float(coord.y) / float(size.y)));
}

那么,这将如何正确完成?

2 个答案:

答案 0 :(得分:7)

这已成为某种常见问题解答:

我在这里回答了

https://stackoverflow.com/a/5879551/524368

在这里

https://stackoverflow.com/a/7272871/524368

以及其他一些地方。

答案 1 :(得分:3)

我想说,使用textureRect。然后你可以使用texture2D,并提供你想要访问的像素的实际坐标。