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

Is it possible to create a texture from a single mipmap level of another?

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

有没有(便宜的,最好)方法来做到这一点?

在 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 级别。它 添加 对计算的详细程度的偏差。因此 bias 为 0.0 等同于根本不提供偏差。