(我在苹果金属这样做,但我认为这个问题适用于OpenGL和DirectX过。从金属或OpenGL代码示例是非常受欢迎的。)如何降低采样纹理
我有一个纹理smallTex
其大小是另一个纹理的大小的倍数bigTex
。
例如,smallTex
具有尺寸32x32
和bigTex
具有128x128
。
我需要的bigTex
内容下采样成smallTex
使得smallTex
每个像素包含在bigTex
对应像素的平均值。
首先,我想我可以创建一个片段着色器,它从bigTex
采样并呈现为smallTex
。但是,这样我会失去很多信息,因为采样最多可以读取四个像素并在它们之间进行插值。
我需要的是真正的下采样,其中源中的每个像素对结果具有相同的影响。
我读过这可以使用mipmaps(基本上是原始纹理的下采样副本)完成。但后来我不得不对bigTex
使纹理映射,这将对性能产生负面影响,因为我在做很多渲染(计算)步骤上bigTex
,这将导致大量的工作,为GPU更新的贴图。
我需要的是一个直接的GPU命令来下采样纹理。
这可能吗?任何提示?