Search code examples
c++indexingbufferdirect3dvertex

Struggling With Vertex And Index Buffers In Direct3D


I've tried for many months to learn how IDirect3DVertexBuffer9 and IDirect3DIndexBuffer9 work. I've read multiple books, e-books and forums and I still can't get the hang of how they work. Can somebody help me understand how they work and how they link together?

PS: I've tried searching through the related questions but nothing interested me.

Thanks.


Solution

  • IndexBuffers are used for memory & speed optimizations. A indexBuffer is a list of indices that index the vertices in the vertexBuffer.

    So say I'm going to render a Flat Quad on the screen with 2 triangles. Each triangle takes up 3 vertices, so to render the quad with just a VertexBuffer I will need 6 vertices.

    Now if I use a IndexBuffer though, I would only need to use 4 vertices(one for each corner of the quad). But I would need 6 indices, 3 indices for each triangle, that will index one of the corner vertices.

    On large models this can save memory & greatly improve speed as the GPU will be processing fewer vertices.

    Here is a site with some good sample code:: http://www.codesampler.com/dx9src.htm In there download the sample called "Indexed Geometry".