IDirect3DDevice9::CreateVertexBuffer-Methode (d3d9.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 Vertexpuffers in Bytes. Für FVF-Vertexpuffer muss Length groß genug sein, um mindestens einen Scheitelpunkt zu enthalten, aber es darf kein Vielfaches der Vertexgröße sein. Die Länge wird für Nicht-FVF-Puffer nicht ü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, wenn dieser Parameter auf Null festgelegt ist, ein Nicht-FVF-Vertexpuffer.
[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 wie folgt aussehen: D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY.
Hinweise
Ein Vertexpuffer kann entweder für die 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 Vertexpuffer 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 IDirect3DDevice9 erstellt und können nur mit dem IDirect3DDevice9-Objekt verwendet werden, aus dem sie erstellt werden.
Bei Festlegung auf einen Wert ungleich Null, der ein gültiger FVF-Code sein muss, 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 einzigen Durchlauf zu verschachteln. Dazu enthält ein Puffer Geometriedaten, und der andere enthält Texturkoordinaten für jede Textur, die gerendert werden soll. Beim Rendern wird der Puffer, der die Geometriedaten enthält, mit jedem der Puffer überlagert, der die Texturkoordinaten enthält. Wenn stattdessen FVF-Puffer verwendet würden, müssten sie zusätzlich zu den Texturkoordinatendaten, die für jede gerenderte Textur spezifisch sind, identische Geometriedaten enthalten. Dies würde je nach verwendeter Strategie entweder zu einer Geschwindigkeits- oder Speichereinbuße führen. Weitere Informationen zu Texturkoordinaten finden Sie unter Texturkoordinaten (Direct3D 9).
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3d9.h (einschließlich D3D9.h) |
Bibliothek | D3D9.lib |
Weitere Informationen
IDirect3DDevice9::P rocessVertices