(我在蘋果金屬這樣做,但我認爲這個問題適用於OpenGL和DirectX過。從金屬或OpenGL代碼示例是非常受歡迎的。)如何降低採樣紋理
我有一個紋理smallTex
其大小是另一個紋理的大小的倍數bigTex
。
例如,smallTex
具有尺寸32x32
和bigTex
具有128x128
。
我需要的bigTex
內容下采樣成smallTex
使得smallTex
每個像素包含在bigTex
對應像素的平均值。
首先,我想我可以創建一個片段着色器,它從bigTex
採樣並呈現爲smallTex
。但是,這樣我會失去很多信息,因爲採樣最多可以讀取四個像素並在它們之間進行插值。
我需要的是真正的下采樣,其中源中的每個像素對結果具有相同的影響。
我讀過這可以使用mipmaps(基本上是原始紋理的下采樣副本)完成。但後來我不得不對bigTex
使紋理映射,這將對性能產生負面影響,因爲我在做很多渲染(計算)步驟上bigTex
,這將導致大量的工作,爲GPU更新的貼圖。
我需要的是一個直接的GPU命令來下采樣紋理。
這可能嗎?任何提示?