如何使用 DirectX 9 渲染 2D 叠加

How to use render a 2D overlay with DirectX 9

本文关键字:2D 叠加 渲染 何使用 DirectX      更新时间:2023-10-16

所以我有一个游戏,我正在C++DirectX 9。它是 3D,但我想有一个 2D 叠加层。我听说我可以使用D3DXMatrixOrthoLH,但我对如何使用它感到非常困惑。我更熟悉OpenGL,在那里我可以通过启动视图在3D和2D之间切换。如何使用 DirectX 9 执行此操作的示例会很棒!

非常感谢!

您可以使用

D3DX9 库中的 ID3DXSprite 类为 HUD 绘制 2D 纹理。

您可以使用恒等变换并使用规范化坐标(-1,-1 到 1,1(进行绘制,同时关闭深度测试,但大多数人发现定位元素不太直观。相反,他们创建一个简单的正交投影转换,将规范化的坐标映射到更自然的像素(0,0 到宽度,高度(。如果使用左手视图坐标,则可以使用 D3DXMatrixOrthoOffCenterLH,如果使用右手视图坐标,则可以使用 D3DXMatrixOrthoOffCenterRH(这对于 2D 绘图无关紧要,但使其与 3D 绘图保持一致不会那么容易混淆(。

为什么使用已有十多年历史的旧版 DirectX 9?如果您使用的是 Direct3D 11,则可以使用 DirectX 工具包和 SpriteBatch 类来绘制 HUD。DirectX SDK 已弃用,D3DX 库已弃用,D3DXMath 已弃用,并且 Windows 8 或更高版本不支持 DirectX 9 的调试。请参阅 MSDN

感谢所有的帮助。我决定放弃DirectX,回到我更熟悉的老式OpenGL。