所以我有一个用DirectX 9在C++上开发的游戏,它是3D的,但我想有一个2D叠加。我听说我可以使用D3DXMatrixOrthoLH,但我对如何使用它感到非常困惑。我更熟悉OpenGL,我可以通过启动视图在3D和2D之间简单地切换。如果有一个使用DirectX 9如何做到这一点的例子,那就更好了!
非常感谢!
发布于 2015-11-01 03:36:01
您可以使用D3DX9库中的ID3DXSprite类为平显绘制2D纹理。
您可以使用标识转换并使用标准化坐标( -1,-1到1,1)绘制,但大多数人发现定位元素不太直观。相反,他们创建一个简单的正交投影变换,将标准化的坐标映射到更自然的东西,如像素(0,0到宽度,高度)。如果您使用的是左手视图坐标,则可以使用D3DXMatrixOrthoOffCenterLH;如果您使用的是右手视图坐标,则可以使用D3DXMatrixOrthoOffCenterRH (这对于2D图形并不重要,但使其与3D图形保持一致不会造成太大的混乱)。
您为什么要使用已有十多年历史的传统DirectX 9?如果你使用的是Direct3D 11,你可以使用DirectX Tool Kit和
SpriteBatch类来绘制你的HUD。不推荐使用Windows,不推荐使用D3DX库,不推荐使用D3DXMath,并且在Windows8或更高版本上不支持DirectX 9的调试。请参阅MSDN
发布于 2015-11-01 20:22:42
感谢大家的帮助。我决定去掉DirectX,回到我更熟悉的老OpenGL。
https://stackoverflow.com/questions/33449990
复制相似问题