【问题标题】:DirectX 9 hiding first triangle in TRIANGLEFANDirectX 9 在 TRIANGLEFAN 中隐藏第一个三角形
【发布时间】:2013-01-07 15:55:03
【问题描述】:

我的问题是:如何使用D3DPT_TRIANGLEFAN绘制正确的金字塔(三角四边形金字塔)?

我用作积分:

CUSTOMVERTEX vertices[] =
{
    {  0.0f, 3.0f, 0.0f, 0x00ff0000, },           //The top Vertex
    {  1.0f, 0.0f, -1.0f, 0xff00ff00, },          //(A) vertex
    {  1.0f, 0.0f, 1.0f,  0xff0000ff, },          //(B) vertex
    {  -1.0f, 0.0f, 1.0f, 0xffffff00, },          //(C) vertex
    {  -1.0f, 0.0f, -1.0f, 0xffff00ff, },         //(D) vertex
    {  1.0f, 0.0f, -1.0f, 0xff00ff00, },          //(A) vertex
};

CUSTOMVERTEX 在哪里:

struct CUSTOMVERTEX 
{
    float x, y, z;
    DWORD color;
};

我叫它:

g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 5);

金字塔绘制正确,但屏幕上绘制了一个额外的三角形,一个由顶部和第一个顶点组成(一个直角三角形,金字塔底部的 PI / 2 角和另一个点是>(第一个点(A))。

所以我想要隐藏那个三角形,我尝试让设备从 1 绘制到 5,但这只给了我基础( (A)-(B)-(C)-(D) 平面),并且我还尝试制作剔除 D3DCULL_CW,当我将金字塔旋转一半时,我可以看到额外的三角形,而它的一半被另一个平面隐藏了。

【问题讨论】:

    标签: c++ directx


    【解决方案1】:

    @987654321@ 的最后一个参数是原始计数,在您的情况下应该是 4?

    如果您想包含基础,则必须将金字塔渲染为三角形列表,而不是完整的金字塔无法用扇形表示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-23
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      相关资源
      最近更新 更多