【发布时间】:2015-04-12 07:31:48
【问题描述】:
(我在 Apple Metal 中这样做,但我认为这个问题也适用于 OpenGL 和 DirectX。非常欢迎来自 Metal 或 OpenGL 的代码示例。)
我有一个纹理 smallTex,其大小是另一个纹理 bigTex 大小的倍数。
例如,smallTex 的维度为 32x32,bigTex 的维度为 128x128。
我需要将bigTex的内容下采样到smallTex,这样smallTex中的每个像素都包含bigTex中相应像素的平均值。
首先我想我可以创建一个片段着色器,它从bigTex 采样并渲染到smallTex。但是,这样我会丢失很多信息,因为采样最多读取四个像素并在它们之间进行插值。
我需要的是真正的下采样,源中的每个像素对结果都有相同的影响。
我读到这可以使用 mipmap(本质上是原始纹理的下采样副本)来完成。但是我必须在bigTex 上启用mipmapping,这将对性能产生负面影响,因为我在bigTex 上执行了许多渲染(计算)步骤,这将导致GPU 需要大量工作来更新贴图。
我需要一个直接的 GPU 命令来对纹理进行下采样。
这可能吗?有什么提示吗?
【问题讨论】:
标签: textures gpu mipmaps downsampling