1

我正在尝试找出索引缓冲区。我阅读了 MSDN 和关于它的另一个线程 [ Struggling With Vertex And Index Buffers In Direct3D ]。

我以为我明白了,但在实践中,我无法让它发挥作用。我试图做一个正方形。

我有6个顶点:

    SimpleVertex vertices[]={ // {Position, Color}
        {XMFLOAT3(-0.5f, 0.5f, 0.5f), XMFLOAT4(0.8f, 0.2f, 6.0f, 1.0f)}, // top left
        {XMFLOAT3(0.5f, -0.5f, 0.5f), XMFLOAT4(0.8f, 0.2f, 6.0f, 1.0f)}, // bottom right
        {XMFLOAT3(-0.5f, -0.5f, 0.5f), XMFLOAT4(0.8f, 0.2f, 6.0f, 1.0f)}, // bottom left

        {XMFLOAT3(-0.5f, 0.5f, 0.5f), XMFLOAT4(0.8f, 0.2f, 6.0f, 1.0f)}, // top left
        {XMFLOAT3(0.5f, 0.5f, 0.5f), XMFLOAT4(0.8f, 0.2f, 6.0f, 1.0f)}, // top right
        {XMFLOAT3(0.5f, -0.5f, 0.5f), XMFLOAT4(0.8f, 0.2f, 6.0f, 1.0f)}, // bottom right
    };

& 一个索引数组:

    unsigned short indices[]={
        0,3,2, // a d c
        0,1,3, // a b d

        // a---b
        // | \ |
        // c---d
    }

但这没有显示任何内容。如果我将索引更改为 0、1、2、3、4、5,它会起作用 [虽然打败了索引的要点]。

有人知道我对索引的看法有什么问题吗?

4

1 回答 1

1

哎呀,在我发布后花了我一段时间来找出我的问题。

1] 我列出了顶点,就好像我要手动绘制它一样。我应该只有 4 个顶点 [不是 6]。索引连接点;第一个 3 个索引构成第一个三角形,第二个 3 个构成第二个三角形。

2]我认为索引数组中的数字代表我想象的形状的边[不确定它是如何工作的:P]。它们实际上代表顶点数组中的位置。

希望这对其他人有帮助。

于 2012-10-09T06:18:41.283 回答