如何处理 Direct3D11 中的后备缓冲区?
How to handle backbuffer in Direct3D11?
最近想学一本书Tricks of 3D Games ProgrammingGurus.It用DDraw实现软渲染engine.ButDDraw是为了old.I想用Direct3D11做同样 things.So 我得到了主后备缓冲区的纹理,并更新 it.But 它没有用,我该怎么办?
即使在现代平台上使用 DirectDraw,您也无法直接访问真正的 frontbuffer/backbuffer。
如果您想在不使用 GPU 的情况下将所有渲染都放入一块 CPU 内存中,那么快速呈现的最佳选择是使用带有 D3D11_USAGE_DYNAMIC
的 Direct3D 11 纹理,并且然后对该纹理进行简单的 full-screen 四边形渲染到演示文稿后备缓冲区。对于该步骤,您可以查看 DirectX Tool Kit 和 SpriteBatch
class.
也就是说,就性能而言,这可能很差,因为您在 CPU 上执行所有操作,而 GPU 在 99% 的时间里基本上什么都不做。
最近想学一本书Tricks of 3D Games ProgrammingGurus.It用DDraw实现软渲染engine.ButDDraw是为了old.I想用Direct3D11做同样 things.So 我得到了主后备缓冲区的纹理,并更新 it.But 它没有用,我该怎么办?
即使在现代平台上使用 DirectDraw,您也无法直接访问真正的 frontbuffer/backbuffer。
如果您想在不使用 GPU 的情况下将所有渲染都放入一块 CPU 内存中,那么快速呈现的最佳选择是使用带有 D3D11_USAGE_DYNAMIC
的 Direct3D 11 纹理,并且然后对该纹理进行简单的 full-screen 四边形渲染到演示文稿后备缓冲区。对于该步骤,您可以查看 DirectX Tool Kit 和 SpriteBatch
class.
也就是说,就性能而言,这可能很差,因为您在 CPU 上执行所有操作,而 GPU 在 99% 的时间里基本上什么都不做。