【问题标题】:DirectX: How do you initialize the vertex buffer and index buffer for a cone?DirectX:如何初始化圆锥的顶点缓冲区和索引缓冲区?
【发布时间】:2010-12-26 15:58:42
【问题描述】:

如何在 C++ 中为 DirectX 9 中的锥体初始化顶点缓冲区和索引缓冲区?

【问题讨论】:

    标签: c++ directx


    【解决方案1】:

    嗯,这很容易。

    圆锥的一端有一个点。

    在另一端你有一个圆圈。显然,你在那个圆圈中的点越多,它看起来就越圆。

    您可以使用

    绘制一个圆
    x = r * cos( theta );
    y = r * sin( theta );
    

    要制作任何三角形,您可以通过插入 theta 和 theta 加上一些小 epsilon 来完成(2Pi / 60 将在圆锥底部为您提供 60 个点)。您的最终坐标是前 1 个。将 3 个索引中的每组插入一个索引缓冲区,然后就可以开始了。

    【讨论】:

      【解决方案2】:

      为什么不用第二个半径为1左右的D3DXCreateCylinder函数呢? 通过这种方式,您可以获得带有顶点和索引缓冲区的 Mesh 对象。从那里提取应该很容易。

      附:我更喜欢使用建模工具,但如果您需要以编程方式获取所有内容,这是最快的方法。

      【讨论】:

        【解决方案3】:

        大多数专业人士使用 CAD 工具绘制它,这些工具能够以 DX 可以理解的格式保存网格。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-23
          • 2018-11-17
          • 2016-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多