我有一个绘制纹理的着色器,我有一个约束,我无法更改此着色器。它具有传递给texture2D的硬编码偏差0。我想使用此着色器绘制纹理的第n个mipmap。即,我想将一些纹理绑定到此着色器的输入,其中0级对应于原始纹理的n级。
有没有(便宜的,最好的)方法呢?
答案 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的偏差与完全不提供偏差相同。