Compartilhar via


Método IDirect3DDevice9::CreateVertexBuffer (d3d9.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.
Os dispositivos de modo misto podem precisar alternar entre o processamento de software e hardware (usando IDirect3DDevice9::SetSoftwareVertexProcessing) após a criação do dispositivo.

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.
Para usar um buffer de vértice com um dispositivo de modo misto, crie um único buffer de vértice que pode ser usado para processamento de hardware ou software. Use IDirect3DDevice9::SetStreamSource para definir o buffer de vértice atual e use IDirect3DDevice9::SetRenderState, se necessário, para alterar o comportamento do dispositivo para corresponder. É recomendável que o uso do buffer de vértice corresponda ao comportamento do dispositivo. Observe que um buffer de vértice criado para processamento de software não pode ser localizado na memória de vídeo.

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 d3d9.h (inclua D3D9.h)
Biblioteca D3D9.lib

Confira também

IDirect3DDevice9

IDirect3DDevice9::P rocessVertices

IDirect3DVertexBuffer9::GetDesc

Buffers de vértice (Direct3D 9)