Método IDirect3DDevice9::CreateVertexBuffer (d3d9helper.h)
Cria um buffer de vértice.
Sintaxe
HRESULT CreateVertexBuffer(
[in] UINT Length,
[in] DWORD Usage,
[in] DWORD FVF,
[in] D3DPOOL Pool,
[out, retval] IDirect3DVertexBuffer9 **ppVertexBuffer,
[in] HANDLE *pSharedHandle
);
Parâmetros
[in] Length
Tipo: UINT
Tamanho do buffer de vértice, em bytes. Para buffers de vértice FVF, Length deve ser grande o suficiente para conter pelo menos um vértice, mas não precisa ser um múltiplo do tamanho do vértice. O comprimento não é validado para buffers não FVF. Consulte Observações.
[in] Usage
Tipo: DWORD
O uso pode ser 0, o que indica nenhum valor de uso. No entanto, se o uso for desejado, use uma combinação de uma ou mais constantes D3DUSAGE . É uma boa prática corresponder o parâmetro de uso em CreateVertexBuffer com os sinalizadores de comportamento em IDirect3D9::CreateDevice. Para obter mais informações, consulte Comentários.
[in] FVF
Tipo: DWORD
Combinação de D3DFVF, um especificador de uso que descreve o formato de vértice dos vértices nesse buffer. Se esse parâmetro for definido como um código FVF válido, o buffer de vértice criado será um buffer de vértice FVF (consulte Comentários). Caso contrário, se esse parâmetro for definido como zero, o buffer de vértice será um buffer de vértice não FVF.
[in] Pool
Tipo: D3DPOOL
Membro do D3DPOOL tipo enumerado, descrevendo uma classe de memória válida na qual colocar o recurso. Não defina como D3DPOOL_SCRATCH.
[out, retval] ppVertexBuffer
Tipo: IDirect3DVertexBuffer9**
Endereço de um ponteiro para uma interface IDirect3DVertexBuffer9 , representando o recurso de buffer de vértice criado.
[in] pSharedHandle
Tipo: HANDLE*
Reservado. Defina esse parâmetro como NULL. Esse parâmetro pode ser usado no Direct3D 9 para o Windows Vista compartilhar recursos.
Retornar valor
Tipo: HRESULT
Se o método for bem-sucedido, o valor retornado será D3D_OK. Se o método falhar, o valor retornado poderá ser um dos seguintes: D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY E_OUTOFMEMORY.
Comentários
Um buffer de vértice pode ser usado com processamento de vértice de hardware ou software. Isso é determinado pela forma como o dispositivo e o buffer de vértice são criados.
Quando um dispositivo é criado, CreateDevice usa o sinalizador de comportamento para determinar se os vértices devem ser processados em hardware ou software. Há três possibilidades:
- Processe vértices no hardware definindo D3DCREATE_HARDWARE_VERTEXPROCESSING.
- Processe vértices no software definindo D3DCREATE_SOFTWARE_VERTEXPROCESSING.
- Processe vértices em hardware ou software definindo D3DCREATE_MIXED_VERTEXPROCESSING.
Quando um buffer de vértice é criado, CreateVertexBuffer usa o parâmetro de uso para decidir se deseja processar vértices em hardware ou software.
- Se CreateDevice usar D3DCREATE_HARDWARE_VERTEXPROCESSING, CreateVertexBuffer deverá usar 0.
- Se CreateDevice usar D3DCREATE_SOFTWARE_VERTEXPROCESSING, CreateVertexBuffer deverá usar 0 ou D3DUSAGE_SOFTWAREPROCESSING. Para qualquer um dos valores, os vértices serão processados no software.
- Se CreateDevice usar D3DCREATE_MIXED_VERTEXPROCESSING, CreateVertexBuffer poderá usar 0 ou D3DUSAGE_SOFTWAREPROCESSING.
A interface IDirect3DDevice9 dá suporte à renderização de primitivos usando dados de vértice armazenados em objetos de buffer de vértice. Os buffers de vértice são criados a partir do IDirect3DDevice9 e são utilizáveis somente com o objeto IDirect3DDevice9 do qual são criados.
Quando definido como um valor diferente de zero, que deve ser um código FVF válido, o parâmetro FVF indica que o conteúdo do buffer deve ser caracterizado por um código FVF. Um buffer de vértice criado com um código FVF é conhecido como um buffer de vértice FVF. Para obter mais informações, consulte Buffers de vértice FVF (Direct3D 9).
Buffers não FVF podem ser usados para intercalar dados durante a renderização de váriospassos ou a renderização de multitextura em uma única passagem. Para fazer isso, um buffer contém dados de geometria e os outros contêm coordenadas de textura para cada textura a ser renderizada. Ao renderizar, o buffer que contém os dados de geometria é intercalado com cada um dos buffers que contêm as coordenadas de textura. Se os buffers FVF fossem usados, cada um deles precisaria conter dados de geometria idênticos, além dos dados de coordenadas de textura específicos para cada textura renderizada. Isso resultaria em uma penalidade de velocidade ou de memória, dependendo da estratégia usada. Para obter mais informações sobre coordenadas de textura, consulte Coordenadas de textura (Direct3D 9).
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | d3d9helper.h (inclua D3D9.h) |
Biblioteca | D3D9.lib |
Confira também
IDirect3DDevice9::P rocessVertices