所以我有一个游戏,我正在使用DirectX 9在C ++中工作。它是3D,但我希望有一个2D覆盖。我听说过我可以使用D3DXMatrixOrthoLH,但我对如何使用它非常困惑。我更熟悉OpenGL,我可以通过启动视图在3D和2D之间切换。如何使用DirectX 9执行此操作的示例非常棒!
非常感谢!
答案 0 :(得分:1)
您可以使用D3DX9库中的ID3DXSprite
类为HUD绘制2D纹理。
您可以使用标识变换并使用标准化坐标(-1,-1到1,1)进行深度测试,但大多数人发现定位元素的直观性较差。相反,他们创建了一个简单的正交投影变换,将标准化坐标映射到更自然的像素(0,0到宽度,高度)。如果您使用左手视图坐标,则可以使用D3DXMatrixOrthoOffCenterLH
;如果使用右手视图坐标,则可以使用D3DXMatrixOrthoOffCenterRH
(这对于2D绘图并不重要,但制作起来不那么令人困惑它与你的3D绘图一致。)
为什么要使用已有十多年历史的传统DirectX 9?如果您使用的是Direct3D 11,则可以使用DirectX Tool Kit和
SpriteBatch
类来绘制HUD。不推荐使用DirectX SDK,不推荐使用D3DX库,不推荐使用D3DXMath,Windows 8或更高版本不支持调试DirectX 9。见MSDN
答案 1 :(得分:0)
感谢所有帮助人员。我已经决定抓住DirectX并重新回到我熟悉的老OpenGL。