我正在尝试使用IDirect3DDevice9::StretchRect将数据从“屏幕外平面”表面渲染到“渲染目标”表面,但是它返回D3DERR_INVALIDCALL。
根据文档,此功能应在屏幕外起作用以呈现目标操作,因此不确定为什么它可能会失败。
顺便说一句,如果我创建带有D3DPOOL_DEFAULT
标志的屏幕外表面-那么StretchRect
可以工作,但是我需要将它保存在系统内存中,所以我使用D3DPOOL_SYSTEMMEM
标志,这使{{ 1}}失败。
有任何提示吗?
答案 0 :(得分:0)
OK发现IDirect3DDevice9::UpdateSurface
可以达到此目的,但是它不支持缩放。但是,可以使用它将数据复制到中间D3DPOOL_DEFAULT
的表面,然后使用IDirect3DDevice9::StretchRect
将中间的blit到最终的“渲染目标”表面。