首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GLSL片段着色器中,如何访问特定mipmap级别的texel?

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

Stack Overflow用户
提问于 2010-09-03 19:20:11
回答 3查看 5.3K关注 0票数 6

我正在使用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输出,其中包含所有支持的扩展名。

EN

回答 3

Stack Overflow用户

发布于 2010-09-03 21:56:24

代码语言:javascript
复制
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编译器有什么错误/警告?

票数 3
EN

Stack Overflow用户

发布于 2010-11-30 20:28:31

尝试:

代码语言:javascript
复制
glGenerateMipmapEXT(GL_TEXTURE_2D);

在绑定纹理之后。(当然,在进行渲染之前)

我认为glTexParameteri-GL_GENERATE_MIPMAP已经过时了.MfG数字

票数 1
EN

Stack Overflow用户

发布于 2011-09-30 02:44:55

GLSL 1.20规范(第8.7节)规定,片段着色器不能选择自己的mipmap级别(并且texture*Lod函数仅在顶点着色器中可用)。如果有什么不同的话,您可以使用非Lod变量的偏置参数来更改mipmap级别,但它只能相对于卡已经为您计算的值来更改它。

我不知道GLSL的后续版本是否已经改变了这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3635222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档