如何在GL_TEXTURE_2D中使用texelFetch?

Use*_*ted 2 c++ opengl glsl

我试过了:

#version 130

uniform sampler2D texID;
in vec2 texcoord;
out vec4 outcolor;

void main(void) {
    vec2 tcoord=texcoord.xy*768.0;
    ivec2 tst=ivec2(tcoord.x,tcoord.y);
    outcolor=texelFetch(texID,tcoord);
}
Run Code Online (Sandbox Code Playgroud)

并得到了错误texelFetch:

无法找到兼容的重载函数"texelFetch(sampler2D,vec2)".

我没有把这些参数放在我的头上,这里有几个来源:

  1. http://www.opengl.org/wiki/Sampler_(GLSL)#Direct_texel_fetches

  2. http://www.opengl.org/sdk/docs/manglsl/xhtml/texelFetch.xml

TheQuestion:有没有办法使用的方式GL_TEXTURE_2DtexelFetch或纹理着色器执行时只是直接读取的像素?

gen*_*ult 5

检查1.30规格,第89页.

五个texelFetch()重载中没有一个带有两个参数:

gvec4 texelFetch (gsampler1D sampler, int P, int lod) 
gvec4 texelFetch (gsampler2D sampler, ivec2 P, int lod) 
gvec4 texelFetch (gsampler3D sampler, ivec3 P, int lod) 
gvec4 texelFetch (gsampler1DArray sampler, ivec2 P, int lod) 
gvec4 texelFetch (gsampler2DArray sampler, ivec3 P, int lod) 
Run Code Online (Sandbox Code Playgroud)

你需要第三个参数.

  • 你会注意到`1.20`小于1.30`. (4认同)