是否可以从另一个mipmap级别创建纹理?

时间:2015-07-14 22:05:52

标签: opengl opengl-es textures glsl

我有一个绘制纹理的着色器,我有一个约束,我无法更改此着色器。它具有传递给texture2D的硬编码偏差0。我想使用此着色器绘制纹理的第n个mipmap。即,我想将一些纹理绑定到此着色器的输入,其中0级对应于原始纹理的n级。

有没有(便宜的,最好的)方法呢?

1 个答案:

答案 0 :(得分:1)

在ES 3.0及更高版本中,您可以通过相应地设置采样参数将采样限制在一定范围内。例如,要将采样限制为仅,请使用:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, level);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, level);

这些参数在ES 2.0中不可用。我不认为在没有创建纹理副本的情况下,在ES 2.0中有一个很好的方法。

请注意,在GLSL代码中使用 bias 并不意味着使用固定的mipmap级别。 偏差添加到计算的细节级别。因此,0.0的偏差与完全不提供偏差相同。