我有一个 Directx9 游戏引擎,它使用以下格式创建其普通适配器:D3DFMT_X8R8G8B8 我有一个系统,我将一些对象渲染到屏幕外渲染目标,作为光照贴图。然后,我使用该光照贴图数据合成回后台缓冲区,在那里它们充当全屏“蒙版”,让我在黑暗场景中获得手电筒或其他光源的效果。一切都很好。问题是,我知道我的大屏幕外光照贴图渲染目标每个都是 16MB,分辨率很高,我只需要它们的 8 位数据(灰度),所以 32 位渲染目标内存的 75% 是浪费。(我的目标是低规格卡)。我尝试将渲染目标创建为 D3DFMT_A8 但directx 默默地失败了(如果我添加 CheckDeviceFormat() 我看到它发生了)并且无论如何都会创建 32 位。
谢谢你的帮助,我不擅长渲染目标相关的东西:)