【问题标题】:Is it possible to create a texture from a single mipmap level of another?是否可以从另一个的单个 mipmap 级别创建纹理?
【发布时间】:2015-07-14 22:05:51
【问题描述】:

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

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

【问题讨论】:

  • 您的目标是什么 OpenGL 版本?在桌面 GL 中,GL_ARB_texture_view 提供了您想要的内容。但是,您将其标记为 opengl-es,并且此功能在 GLES 中不可用。
  • 是的,我的目标是 ES 2.0。抱歉没有具体说明。真可惜。

标签: opengl opengl-es textures glsl


【解决方案1】:

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

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 与根本不提供偏差是一样的。

【讨论】:

  • 如果基本级别除了 0 之外没有其他办法,那么这种区别在 ES 2.0 上是否有意义?或者你的意思是计算出来的水平不一定是0?如果我绘制已生成 mipmap 的纹理并将最小化过滤器适当地设置为纹理大小一半的矩形,是否会使用第一个 mipmap 级别?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 2013-01-22
  • 2012-03-23
  • 2018-12-11
  • 2015-07-14
相关资源
最近更新 更多