【发布时间】:2014-04-18 10:59:34
【问题描述】:
我正在开发一款游戏的扩展,它只打开一个 HDC 供插件开发者使用。
但是,我已经用尽了 GDI+/Direct2D 绘图的可能性,这些可能性对于我想要完成的图像效果(加法、混合、乘法混合等)来说已经足够快了。
我很清楚 Direct2D 提供了一个效果工具包,但它需要平台更新(对于 Windows 7),这根本不理想。
因此我只剩下 Direct3D。 MSDN/Google 搜索提供了很多方法来做 D2D -> D3D,但 ZERO 展示了如何做 D3D -> D2D。我知道有一种方法可以转换 D3D -> D2D,即映射和复制像素数据,但这是非常低效的,因为(如果我是对的)它从 GPU VRAM -> CPU/RAM -> GPU VRAM 传输。我可能只会将其用作最后的选择....
或者,如果有人知道如何从 D3D11 中的 RenderTarget 获取 HDC 以便我可以 BitBlt,它也可能有效。
如果有人能提供帮助,我将不胜感激。
【问题讨论】:
-
不是很清楚你的问题,你想要什么?
-
捕获 D3D 的 Backbuffer 作为 ID3D11Texture2D 并转换为 ID2D1Bitmap 以发送到 D2D,如果可能的话如何做到这一点。希望它足够清楚。
-
您应该描述一些有关业务逻辑的内容,您是否要在 D3D 和 D2D 之间进行实时同步?
-
是的,因为我使用 D3D 进行图像处理,所以我需要它几乎立即出现。 (但不需要每帧都更新,只在图像发生变化时更新)
标签: directx direct3d directx-11 direct2d dxgi