我正在进入GLSL,需要一些纹理查找的帮助。我正在尝试使用纹理存储,但我无法获得“适当的”纹理查找。我更喜欢使用常用的纹理2D方法(使用GLSL 1.2),但效果不够好。
使用纹理2D:
使用texelFetch:
现在,很明显,第一个问题出了问题。这就是我想要做的(是的,尺码是正确的,除非有什么我不知道的):
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条答案
按热度按时间wtzytmuj1#
这已经变成了某种常见问题:
我在这里回答了
https://stackoverflow.com/a/5879551/524368
还有这里
https://stackoverflow.com/a/7272871/524368
在其他一些地方也是如此。
texture2D(tex, (2 * uv + vec2(1.))/2 * u_texsize);
5f0d552i2#
我会说,使用textureRect。然后,您可以使用texture2D,并提供您想要访问的以像素为单位的实际坐标。