【发布时间】:2010-12-26 15:58:42
【问题描述】:
如何在 C++ 中为 DirectX 9 中的锥体初始化顶点缓冲区和索引缓冲区?
【问题讨论】:
如何在 C++ 中为 DirectX 9 中的锥体初始化顶点缓冲区和索引缓冲区?
【问题讨论】:
嗯,这很容易。
圆锥的一端有一个点。
在另一端你有一个圆圈。显然,你在那个圆圈中的点越多,它看起来就越圆。
您可以使用
绘制一个圆x = r * cos( theta );
y = r * sin( theta );
要制作任何三角形,您可以通过插入 theta 和 theta 加上一些小 epsilon 来完成(2Pi / 60 将在圆锥底部为您提供 60 个点)。您的最终坐标是前 1 个。将 3 个索引中的每组插入一个索引缓冲区,然后就可以开始了。
【讨论】:
为什么不用第二个半径为1左右的D3DXCreateCylinder函数呢? 通过这种方式,您可以获得带有顶点和索引缓冲区的 Mesh 对象。从那里提取应该很容易。
附:我更喜欢使用建模工具,但如果您需要以编程方式获取所有内容,这是最快的方法。
【讨论】:
大多数专业人士使用 CAD 工具绘制它,这些工具能够以 DX 可以理解的格式保存网格。
【讨论】: