我试过了:

#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);
}

并在texelFetch上出现错误:

无法找到兼容的重载函数“texelFetch(sampler2D,vec2)”。

我并没有把这些参数放在这里几个来源:
  • http://www.opengl.org/wiki/Sampler_(GLSL)#Direct_texel_fetches
  • http://www.opengl.org/sdk/docs/manglsl/xhtml/texelFetch.xml

  • TheQuestion:有没有一种方法可以将GL_TEXTURE_2DtexelFetch一起使用,或者仅在执行着色器时直接从纹理读取像素?

    最佳答案

    检查1.30 spec,第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)
    

    您需要第三个参数。

    关于c++ - 如何在GL_TEXTURE_2D中使用texelFetch?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13812454/

    10-12 04:24