我正在使用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输出,其中包含所有支持的扩展名。
发布于 2010-09-03 21:56:24
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编译器有什么错误/警告?
发布于 2010-11-30 20:28:31
尝试:
glGenerateMipmapEXT(GL_TEXTURE_2D);在绑定纹理之后。(当然,在进行渲染之前)
我认为glTexParameteri-GL_GENERATE_MIPMAP已经过时了.MfG数字
发布于 2011-09-30 02:44:55
GLSL 1.20规范(第8.7节)规定,片段着色器不能选择自己的mipmap级别(并且texture*Lod函数仅在顶点着色器中可用)。如果有什么不同的话,您可以使用非Lod变量的偏置参数来更改mipmap级别,但它只能相对于卡已经为您计算的值来更改它。
我不知道GLSL的后续版本是否已经改变了这一点。
https://stackoverflow.com/questions/3635222
复制相似问题