opengl - 在 GLSL 片段着色器中,如何访问特定 mipmap 级别的 texel?

标签 opengl gpgpu mipmaps

我正在使用 OpenGL 通过一个顶点着色器和一个片段着色器的组合进行一些 GPGPU 计算。我需要对不同比例的图像进行计算。我想使用 mipmap,因为它们的生成可以是自动的并且硬件加速。但是我无法访问片段着色器中的 mipmap 纹理。

我启用了自动 mipmap 生成:
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);

我尝试在着色器中使用 texture2DLod 没有运气,它只是继续提供正常的纹理。我还尝试在主程序中使用 glTextureParameteri(GL_BASE_LEVEL, X) 并且它没有改变任何东西。

你会怎么做?

我正在使用 Linux。我的显卡是很旧的 Nvidia Quadro。 Here是我的 glxinfo 输出以及所有支持的扩展。

最佳答案

gvec4 textureLod (gsampler1D sampler, float P, float lod)
gvec4 textureLod (gsampler2D sampler, vec2 P, float lod)
gvec4 textureLod (gsampler3D sampler, vec3 P, float lod)
gvec4 textureLod (gsamplerCube sampler, vec3 P, float lod)
float textureLod (sampler1DShadow sampler, vec3 P, float lod)
float textureLod (sampler2DShadow sampler, vec3 P, float lod)
gvec4 textureLod (gsampler1DArray sampler, vec2 P, float lod)
gvec4 textureLod (gsampler2DArray sampler, vec3 P, float lod)
float textureLod (sampler1DArrayShadow sampler, vec3 P, float lod)

您是否尝试过其中一种内置功能?还有 lod必须是浮点型。报告 GLSL 编译器有哪些错误/警告?

关于opengl - 在 GLSL 片段着色器中,如何访问特定 mipmap 级别的 texel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3635222/

相关文章:

opengl - 如何使opengl mipmap更清晰?

c++ - 为什么从上方直接向下看时不渲染形状?

cross-platform - OpenCL - 支持具有相同二进制文件的不同平台

c++ - cl::Program::Sources 在哪里定义的?

cuda - gpu上的模运算

opengl - 如果后面没有 glGetError,glGenerateMipmap 就会失败……等等,什么?

c++ - 天空盒纹理未在 opengl 中显示

c++ - glFog导致透明png失去透明度

c++ - vsync "wait"(阻塞)在什么时候发生?

opengl - 模糊 OpenGL 中的深度缓冲区 - 如何访问片段着色器中的 mipmap 级别?