IDirect3DDevice9::DrawIndexedPrimitive method (d3d9helper.h)

Based on indexing, renders the specified geometric primitive into an array of vertices.


HRESULT DrawIndexedPrimitive(
  [in] D3DPRIMITIVETYPE unnamedParam1,
  [in] INT              BaseVertexIndex,
  [in] UINT             MinVertexIndex,
  [in] UINT             NumVertices,
  [in] UINT             startIndex,
  [in] UINT             primCount


[in] unnamedParam1


Member of the D3DPRIMITIVETYPE enumerated type, describing the type of primitive to render. D3DPT_POINTLIST is not supported with this method. See Remarks.

[in] BaseVertexIndex

Type: INT

Offset from the start of the vertex buffer to the first vertex. See Scenario 4.

[in] MinVertexIndex

Type: UINT

Minimum vertex index for vertices used during this call. This is a zero based index relative to BaseVertexIndex.

[in] NumVertices

Type: UINT

Number of vertices used during this call. The first vertex is located at index: BaseVertexIndex + MinIndex.

[in] startIndex

Type: UINT

Index of the first index to use when accessing the vertex buffer. Beginning at StartIndex to index vertices from the vertex buffer.

[in] primCount

Type: UINT

Number of primitives to render. The number of vertices used is a function of the primitive count and the primitive type. The maximum number of primitives allowed is determined by checking the MaxPrimitiveCount member of the D3DCAPS9 structure.

Return value


If the method succeeds, the return value is D3D_OK. If the method fails, the return value can be the following: D3DERR_INVALIDCALL.


This method draws indexed primitives from the current set of data input streams. MinIndex and all the indices in the index stream are relative to the BaseVertexIndex.

The MinIndex and NumVertices parameters specify the range of vertex indices used for each IDirect3DDevice9::DrawIndexedPrimitive call. These are used to optimize vertex processing of indexed primitives by processing a sequential range of vertices prior to indexing into these vertices. It is invalid for any indices used during this call to reference any vertices outside of this range.

IDirect3DDevice9::DrawIndexedPrimitive fails if no index array is set.

The D3DPT_POINTLIST member of the D3DPRIMITIVETYPE enumerated type is not supported and is not a valid type for this method.

When converting a legacy application to Direct3D 9, you must add a call to either IDirect3DDevice9::SetFVF to use the fixed function pipeline, or IDirect3DDevice9::SetVertexDeclaration to use a vertex shader before you make any Draw calls.


Requirement Value
Target Platform Windows
Header d3d9helper.h (include D3D9.h)
Library D3D9.lib

See also



Index Buffers (Direct3D 9)

Rendering from Vertex and Index Buffers (Direct3D 9)

Vertex Buffers (Direct3D 9)