我在自己的 DirectX 11 游戏引擎中使用 Bullet Physics,并且我想使用 Bullet 提供的调试绘制类。基本上,您正在创建一个类,该类接收应由项目符号绘制的所有线条。是否有一种简单快捷的方法可以在 DirectX 11 中绘制一条 3D 线(最好不使用缓冲区和着色器以及所有这些东西)?
问问题
1967 次
3 回答
4
不幸的是,没有简单的方法。您需要使用线点创建一个顶点缓冲区。如果要绘制多条线,请将所有顶点放在一个缓冲区中以优化性能。
因为 FFP 在 DirectX 10 中已被移除,所以您需要一个简单的着色器。顶点着色器可能只是用视图和投影变换来变换顶点,而像素着色器返回一个恒定的颜色(取决于您的需要)。
然后,您将使用适当的拓扑(线列表)绘制顶点缓冲区。
没有简单方法(如 Jesus Ramos 的回答或 OpenGL 的glBegin(GL_LINES)
)的原因是它们无法有效地实现。总是需要向 GPU 传输比需要更多的数据。这就是程序员使用缓冲区编写高效代码的原因。
于 2013-08-11T13:22:36.430 回答
1
使用LP3DXLINE
和调用D3DXCreateLine
来绘制一条简单的线。为您的线路调用Draw
长度为 2(开始,结束)的数组,它应该可以工作。
编辑:这显然只是 DX9。在这里留下答案,以防万一它帮助别人。
于 2013-08-10T23:32:19.303 回答
0
任何在发光线框中使用三角形并使 2 个顶点位于相同位置的机会:x1y1z1,x2y2z2,x2y2z2 我在 DBPro 中执行此操作并且它有效。
于 2013-12-22T21:52:14.493 回答