Metodo IDirect3DDevice9::CreateVertexBuffer (d3d9.h)
Crea un buffer dei vertici.
Sintassi
HRESULT CreateVertexBuffer(
[in] UINT Length,
[in] DWORD Usage,
[in] DWORD FVF,
[in] D3DPOOL Pool,
[out, retval] IDirect3DVertexBuffer9 **ppVertexBuffer,
[in] HANDLE *pSharedHandle
);
Parametri
[in] Length
Tipo: UINT
Dimensioni del buffer del vertice, in byte. Per i buffer dei vertici FVF, la lunghezza deve essere abbastanza grande per contenere almeno un vertice, ma non deve essere un multiplo delle dimensioni del vertice. La lunghezza non viene convalidata per i buffer non FVF. Vedere la sezione Osservazioni.
[in] Usage
Tipo: DWORD
L'utilizzo può essere 0, che indica nessun valore di utilizzo. Tuttavia, se si desidera usare una combinazione di una o più costanti D3DUSAGE . È consigliabile corrispondere al parametro di utilizzo in CreateVertexBuffer con i flag di comportamento in IDirect3D9::CreateDevice. Per altre informazioni, vedere la sezione Osservazioni.
[in] FVF
Tipo: DWORD
Combinazione di D3DFVF, un identificatore di utilizzo che descrive il formato del vertice dei vertici in questo buffer. Se questo parametro è impostato su un codice FVF valido, il buffer dei vertici creato è un buffer dei vertici FVF (vedere Osservazioni). In caso contrario, se questo parametro è impostato su zero, il buffer del vertice è un buffer del vertice non FVF.
[in] Pool
Tipo: D3DPOOL
Membro del tipo enumerato D3DPOOL , che descrive una classe di memoria valida in cui inserire la risorsa. Non impostare su D3DPOOL_SCRATCH.
[out, retval] ppVertexBuffer
Tipo: IDirect3DVertexBuffer9**
Indirizzo di un puntatore a un'interfaccia IDirect3DVertexBuffer9 che rappresenta la risorsa del buffer dei vertici creata.
[in] pSharedHandle
Tipo: HANDLE*
Riservato. Impostare questo parametro su NULL. Questo parametro può essere usato in Direct3D 9 per Windows Vista per condividere le risorse.
Valore restituito
Tipo: HRESULT
Se il metodo ha esito positivo, il valore restituito è D3D_OK. Se il metodo ha esito negativo, il valore restituito può essere uno dei seguenti: D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY.
Commenti
Un buffer dei vertici può essere usato con l'elaborazione del vertice hardware o software. Ciò è determinato dal modo in cui il dispositivo e il buffer del vertice vengono creati.
Quando viene creato un dispositivo, CreateDevice usa il flag di comportamento per determinare se elaborare vertici in hardware o software. Vi sono tre possibilità:
- Elaborare vertici nell'hardware impostando D3DCREATE_HARDWARE_VERTEXPROCESSING.
- Elaborare vertici nel software impostando D3DCREATE_SOFTWARE_VERTEXPROCESSING.
- Elaborare vertici in hardware o software impostando D3DCREATE_MIXED_VERTEXPROCESSING.
Quando viene creato un buffer dei vertici, CreateVertexBuffer usa il parametro di utilizzo per decidere se elaborare vertici nell'hardware o nel software.
- Se CreateDevice usa D3DCREATE_HARDWARE_VERTEXPROCESSING, CreateVertexBuffer deve usare 0.
- Se CreateDevice usa D3DCREATE_SOFTWARE_VERTEXPROCESSING, CreateVertexBuffer deve usare 0 o D3DUSAGE_SOFTWAREPROCESSING. Per entrambi i valori, i vertici verranno elaborati nel software.
- Se CreateDevice usa D3DCREATE_MIXED_VERTEXPROCESSING, CreateVertexBuffer può usare 0 o D3DUSAGE_SOFTWAREPROCESSING.
L'interfaccia IDirect3DDevice9 supporta il rendering delle primitive usando i dati dei vertici archiviati negli oggetti buffer vertex. I buffer vertex vengono creati dall'oggetto IDirect3DDevice9 e sono utilizzabili solo con l'oggetto IDirect3DDevice9 da cui vengono creati.
Se impostato su un valore diverso da zero, che deve essere un codice FVF valido, il parametro FVF indica che il contenuto del buffer deve essere caratterizzato da un codice FVF. Un buffer del vertice creato con un codice FVF viene definito buffer del vertice FVF. Per altre informazioni, vedere Buffer vertex FVF (Direct3D 9).
I buffer non FVF possono essere usati per interleavere i dati durante il rendering multipasso o il rendering multitexture in un singolo passaggio. A tale scopo, un buffer contiene dati geometry e gli altri contengono coordinate di trama per ogni trama da eseguire il rendering. Durante il rendering, il buffer contenente i dati geometry viene interleavedato con ognuno dei buffer contenenti le coordinate della trama. Se invece sono stati usati buffer FVF, ognuno di essi deve contenere dati geometry identici oltre ai dati delle coordinate della trama specifici per ogni trama di cui è stato eseguito il rendering. Ciò comporta una velocità o una penalità di memoria, a seconda della strategia usata. Per altre informazioni sulle coordinate della trama, vedere Coordinate trama (Direct3D 9).
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | d3d9.h (includere D3D9.h) |
Libreria | D3D9.lib |
Vedi anche
IDirect3DDevice9::P rocessVertices