IDirect3DDevice9::CreateVertexBuffer-Methode (d3d9helper.h)
Erstellt einen Vertexpuffer.
Syntax
HRESULT CreateVertexBuffer(
[in] UINT Length,
[in] DWORD Usage,
[in] DWORD FVF,
[in] D3DPOOL Pool,
[out, retval] IDirect3DVertexBuffer9 **ppVertexBuffer,
[in] HANDLE *pSharedHandle
);
Parameter
[in] Length
Typ: UINT
Größe des Scheitelpunktpuffers in Bytes. Bei FVF-Vertexpuffern muss Die Länge groß genug sein, um mindestens einen Scheitelpunkt zu enthalten, aber es muss kein Vielfaches der Vertexgröße sein. Die Länge wird nicht für Nicht-FVF-Puffer überprüft. Siehe Hinweise.
[in] Usage
Typ: DWORD
Die Verwendung kann 0 sein, was keinen Nutzungswert angibt. Wenn die Verwendung jedoch gewünscht ist, verwenden Sie eine Kombination aus einer oder mehreren D3DUSAGE Konstanten. Es empfiehlt sich, den Verwendungsparameter in CreateVertexBuffer mit den Verhaltensflags in IDirect3D9::CreateDevice abzugleichen. Weitere Informationen finden Sie in den Hinweisen.
[in] FVF
Typ: DWORD
Kombination aus D3DFVF, einem Verwendungsspezifizierer, der das Scheitelpunktformat der Scheitelpunkte in diesem Puffer beschreibt. Wenn dieser Parameter auf einen gültigen FVF-Code festgelegt ist, ist der erstellte Vertexpuffer ein FVF-Vertexpuffer (siehe Hinweise). Andernfalls ist der Vertexpuffer ein Nicht-FVF-Vertexpuffer, wenn dieser Parameter auf 0 festgelegt ist.
[in] Pool
Typ: D3DPOOL
Member des D3DPOOL aufgezählten Typs, der eine gültige Speicherklasse beschreibt, in der die Ressource platziert werden soll. Legen Sie nicht auf D3DPOOL_SCRATCH fest.
[out, retval] ppVertexBuffer
Typ: IDirect3DVertexBuffer9**
Adresse eines Zeigers auf eine IDirect3DVertexBuffer9-Schnittstelle , die die erstellte Vertexpufferressource darstellt.
[in] pSharedHandle
Typ: HANDLE*
Reserviert. Legen Sie diesen Parameter auf NULL fest. Dieser Parameter kann in Direct3D 9 für Windows Vista zum Freigeben von Ressourcen verwendet werden.
Rückgabewert
Typ: HRESULT
Wenn die Methode erfolgreich ist, wird der Rückgabewert D3D_OK. Wenn die Methode fehlschlägt, kann der Rückgabewert einer der folgenden sein: D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY.
Hinweise
Ein Vertexpuffer kann mit der Hardware- oder Softwarevertexverarbeitung verwendet werden. Dies wird durch die Erstellung des Geräts und des Vertexpuffers bestimmt.
Wenn ein Gerät erstellt wird, verwendet CreateDevice das Verhaltensflag, um zu bestimmen, ob Scheitelpunkte in Hardware oder Software verarbeitet werden sollen. Es gibt drei Möglichkeiten:
- Verarbeiten Sie Scheitelpunkte in Hardware, indem Sie D3DCREATE_HARDWARE_VERTEXPROCESSING festlegen.
- Verarbeiten Sie Scheitelpunkte in Software, indem Sie D3DCREATE_SOFTWARE_VERTEXPROCESSING festlegen.
- Verarbeiten Sie Scheitelpunkte in Hardware oder Software, indem Sie D3DCREATE_MIXED_VERTEXPROCESSING festlegen.
Wenn ein Scheitelpunktpuffer erstellt wird, verwendet CreateVertexBuffer den Verwendungsparameter, um zu entscheiden, ob Scheitelpunkte in Hardware oder Software verarbeitet werden sollen.
- Wenn CreateDevice D3DCREATE_HARDWARE_VERTEXPROCESSING verwendet, muss CreateVertexBuffer 0 verwenden.
- Wenn CreateDevice D3DCREATE_SOFTWARE_VERTEXPROCESSING verwendet, muss CreateVertexBuffer entweder 0 oder D3DUSAGE_SOFTWAREPROCESSING verwenden. Für beide Werte werden Scheitelpunkte in Software verarbeitet.
- Wenn CreateDevice D3DCREATE_MIXED_VERTEXPROCESSING verwendet, kann CreateVertexBuffer entweder 0 oder D3DUSAGE_SOFTWAREPROCESSING verwenden.
Die IDirect3DDevice9-Schnittstelle unterstützt das Rendern von Grundtypen mithilfe von Vertexdaten, die in Vertexpufferobjekten gespeichert sind. Vertexpuffer werden aus dem IDirect3DDevice9 erstellt und können nur mit dem IDirect3DDevice9-Objekt verwendet werden, aus dem sie erstellt werden.
Wenn sie auf einen Wert ohne Zero festgelegt ist, bei dem es sich um einen gültigen FVF-Code handelt, gibt der FVF-Parameter an, dass der Pufferinhalt durch einen FVF-Code gekennzeichnet werden soll. Ein Vertexpuffer, der mit einem FVF-Code erstellt wird, wird als FVF-Vertexpuffer bezeichnet. Weitere Informationen finden Sie unter FVF-Vertexpuffer (Direct3D 9).
Nicht-FVF-Puffer können verwendet werden, um Daten beim Rendern mit mehreren Pässen oder beim Rendern mit mehreren Texttexten in einem einzelnen Durchlauf zu verschachteln. Dazu enthält ein Puffer Geometriedaten, und die anderen enthalten Texturkoordinaten für jede texturierte Textur, die gerendert werden soll. Beim Rendern wird der Puffer, der die Geometriedaten enthält, mit jedem Puffer verschachtelt, der die Texturkoordinaten enthält. Wenn stattdessen FVF-Puffer verwendet würden, müsste jeder von ihnen identische Geometriedaten zusätzlich zu den Texturkoordinatendaten enthalten, die für jede gerenderte Textur spezifisch sind. Dies würde abhängig von der verwendeten Strategie entweder zu einer Geschwindigkeits- oder Speicherstrafe führen. Weitere Informationen zu Texturkoordinaten finden Sie unter Texturkoordinaten (Direct3D 9).
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3d9helper.h (einschließlich D3D9.h) |
Bibliothek | D3D9.lib |
Weitere Informationen
IDirect3DDevice9::P rocessVertices