DirectX 11 - Bullet调试绘图

时间:2013-08-10 23:06:27

标签: c++ directx lines bullet

我在自己的DirectX 11游戏引擎中使用Bullet Physics,我想使用bullet提供的调试绘图类。基本上,您正在创建一个类,它接收应该由项目符号绘制的所有行。是否有一种简单快捷的方法可以在DirectX 11中绘制3D线(最好不使用缓冲区和着色器以及所有这些东西)?

3 个答案:

答案 0 :(得分:4)

不幸的是,没有简单的方法。您需要使用线点创建顶点缓冲区。如果要绘制多条线,请将所有顶点放在一个缓冲区中以优化性能。

由于在DirectX 10中删除了FFP,因此您需要一个简单的着色器。顶点着色器可能只是通过视图和投影变换转换顶点,像素着色器返回一个恒定的颜色(根据您的需要)。

然后,您将使用适当的拓扑(行列表)绘制顶点缓冲区。

没有简单的方法(如耶稣拉莫斯的回答或OpenGL的glBegin(GL_LINES))的原因是它们无法有效实施。始终需要将更多数据传输到GPU而不是需要。这就是程序员使用缓冲区编写高效代码的原因。

答案 1 :(得分:1)

使用LP3DXLINE并致电D3DXCreateLine绘制一条简单的线条。使用长度为2(开始,结束)的数组为您的行调用Draw,它应该可以正常工作。

编辑:这显然只是DX9。在这里留下答案,以防它帮助其他人。

答案 2 :(得分:0)

在点亮的线框中使用三角形并使2个顶点位于相同位置的任何机会: x1y1z1,x2y2z2,x2y2z2 我在DBPro中这样做,它的工作原理。