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:
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.
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