我已经阅读了texelFetch的OpenGl文档,该文档是:

gvec4 texelFetch(gsampler2D sampler,ivec2 P,int lod)。

我知道第一个参数“ sampler”是只是一个纹理。但是我对第二个和第三个参数感到非常困惑。

根据文档,第二个参数“ P”是纹理坐标。但是它的类型为ivec2,这意味着它是整数的向量。纹理坐标不应该在[0,1]范围内吗?

对于文档中的第三个参数“ lod”,它表示“如果存在,则指定纹理的细节级别,从中提取纹理像素。”我不知道如何设置此参数...

谁能解释这个问题,并给出一个有关如何使用texelFetch的真实示例?

谢谢!

#1 楼

好的,我已经解决了这个问题。

对于纹理坐标,有两种纹理坐标。一种是归一化的纹理坐标,范围为[0,1]。另一个是纹理空间,在[0,size)范围内,其中size是纹理的大小。对于texelFetch(),使用texel空间。

对于lod,它表示mipmap中的详细程度。我们可以简单地使用0作为基本级别(原始大小)。

,因此,使用texelFetch()的示例应为:

vec4 texelValue= texelFetch(texture2D, ivec2(gl_FragCoord.xy), 0);


评论


$ \ begingroup $
非常感谢@NicolBolas帮助编辑了格式。我是StackOverflow的新手。经过另一次编辑后,我注意到您的名字已经消失了...并不是要这么做
$ \ endgroup $
–于岑
18年6月5日在15:06

$ \ begingroup $
不要忘记也接受您的回答!
$ \ endgroup $
–伯尼
18年6月11日在14:56