IDirect3DDevice3::DrawPrimitiveVB

The IDirect3DDevice3::DrawPrimitiveVB method renders an array of vertices in a vertex buffer as a sequence of geometric primitives.

HRESULT DrawPrimitiveVB( 
  D3DPRIMITIVETYPE d3dptPrimitiveType,
  LPDIRECT3DVERTEXBUFFER lpd3dVertexBuffer,
  DWORD dwStartVertex,
  DWORD dwNumVertices,
  DWORD dwFlags
); 
 

Parameters

d3dptPrimitiveType
Type of primitive to be rendered by this command. This must be one of the members of the D3DPRIMITIVETYPE enumerated type.
lpd3dVertexBuffer
Address of the IDirect3DVertexBuffer interface for the vertex buffer that contains the array of vertices. Vertices can be transformed or untransformed, optimized or unoptimized.
dwStartVertex
Index value of the first vertex in the primitive. The highest possible starting index is 65,535 (0xFFFF). In debug builds, specifying a starting index value that exceeds this limit will cause the method to fail and return DDERR_INVALIDPARAMS.
dwNumVertices
Number of vertices to be rendered. The maximum number of vertices allowed is 65,535 (0xFFFF).
dwFlags
One or more of the following flags defining how the primitive is drawn:
D3DDP_DONOTCLIP
The application has already done the required clipping, so the system should not necessarily clip the primitives. (This flag is a hint; the system may clip the primitive even when this flag is specified, under some circumstances.)
D3DDP_DONOTLIGHT
Disables the Direct3D lighting engine. The system uses the diffuse and specular components at each vertex for shading when it rasterizes the set of primitives. If a diffuse or specular component is not specified, the system uses the default color for the missing component (0xFFFFFFFF for diffuse and 0x00000000 for specular).
D3DDP_DONOTUPDATEEXTENTS
Disables the updating of the screen rectangle affected by this rendering call. Using this flag can potentially help performance, but the extents returned by IDirect3DDevice3::GetClipStatus will not have been updated to account for the data rendered by this call.
D3DDP_WAIT
Causes the method to wait until the polygons have been rendered before it returns, instead of returning as soon as the polygons have been sent to the card. (On scene-capture cards, the method returns as soon as the card responds.) This flag is typically used for debugging. Applications should not attempt to use this flag to ensure that a scene is up-to-date before continuing.

Return Values

If the method succeeds, the return value is DD_OK.

If the method fails, the return value may be one of the following values:

D3DERR_INVALIDRAMPTEXTURE
D3DERR_INVALIDPRIMITIVETYPE
D3DERR_INVALIDVERTEXTYPE
D3DERR_VERTEXBUFFERLOCKED
DDERR_INVALIDPARAMS
DDERR_WASSTILLDRAWING

Remarks

Software devices—MMX and RGB devices—cannot render from a video memory (local or non-local) vertex buffer. To render a vertex buffer using a software device, the vertex buffer must exist in system memory. Hardware devices can render from system memory or video memory vertex buffers.

You cannot render from a locked vertex buffer; calls to the IDirect3DDevice3::DrawIndexedPrimitiveVB or IDirect3DDevice3::DrawPrimitiveVB method using a locked buffer will fail, returning D3DERR_VERTEXBUFFERLOCKED.

This method was introduced with the IDirect3DDevice3 interface.

QuickInfo

  Windows NT/2000: Requires Windows 2000.
  Windows 95/98: Requires Windows 95 or later. Available as a redistributable for Windows 95.
  Header: Declared in d3d.h.
  Import Library: Use ddraw.lib.

See Also

IDirect3DDevice3::DrawPrimitive, IDirect3DDevice3::DrawPrimitiveStrided, IDirect3DDevice3::DrawIndexedPrimitive, IDirect3DDevice3::DrawIndexedPrimitiveStrided, IDirect3DDevice3::DrawIndexedPrimitiveVB