索引缓冲区,它们如何工作?

时间:2012-10-09 05:57:21

标签: directx

我试图找出索引缓冲区。我读过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,它的工作原理[虽然会破坏索引点。]

任何人都知道我对指数的看法有什么问题?

1 个答案:

答案 0 :(得分:1)

哎呀,在我发布以解决我的问题后,我花了一些时间。

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

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

希望这有助于其他人。