Condividi tramite


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.
I dispositivi in modalità mista potrebbero dover passare da un software all'elaborazione hardware (usando IDirect3DDevice9::SetSoftwareVertexProcessing) dopo la creazione del dispositivo.

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.
Per usare un buffer dei vertici con un dispositivo in modalità mista, creare un singolo buffer dei vertici che può essere usato per l'elaborazione hardware o software. Usare IDirect3DDevice9::SetStreamSource per impostare il buffer del vertice corrente e usare IDirect3DDevice9::SetRenderState, se necessario, per modificare il comportamento del dispositivo in modo che corrisponda. È consigliabile che l'utilizzo del buffer del vertice corrisponda al comportamento del dispositivo. Si noti che non è possibile trovare un buffer del vertice creato per l'elaborazione software nella memoria video.

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

IDirect3DDevice9::P rocessVertices

IDirect3DVertexBuffer9::GetDesc

Buffer vertex (Direct3D 9)