Compartir a través de


Método IDirect3DDevice9::CreateVertexBuffer (d3d9helper.h)

Crea un búfer de vértices.

Sintaxis

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

Tamaño del búfer de vértices, en bytes. En el caso de los búferes de vértices FVF, length debe ser lo suficientemente grande como para contener al menos un vértice, pero no necesita ser un múltiplo del tamaño del vértice. La longitud no se valida para los búferes que no son FVF. Vea la sección Comentarios.

[in] Usage

Tipo: DWORD

El uso puede ser 0, lo que indica que no hay ningún valor de uso. Sin embargo, si se desea el uso, use una combinación de una o varias constantes D3DUSAGE . Se recomienda hacer coincidir el parámetro de uso en CreateVertexBuffer con las marcas de comportamiento en IDirect3D9::CreateDevice. Para obtener más información, vea la sección Comentarios.

[in] FVF

Tipo: DWORD

Combinación de D3DFVF, especificador de uso que describe el formato de vértices de los vértices de este búfer. Si este parámetro se establece en un código FVF válido, el búfer de vértices creado es un búfer de vértices FVF (vea Comentarios). De lo contrario, si este parámetro se establece en cero, el búfer de vértices es un búfer de vértices que no es FVF.

[in] Pool

Tipo: D3DPOOL

Miembro del tipo enumerado D3DPOOL , que describe una clase de memoria válida en la que colocar el recurso. No establezca en D3DPOOL_SCRATCH.

[out, retval] ppVertexBuffer

Tipo: IDirect3DVertexBuffer9**

Dirección de un puntero a una interfaz IDirect3DVertexBuffer9 , que representa el recurso de búfer de vértices creado.

[in] pSharedHandle

Tipo: HANDLE*

Reservado. Establezca este parámetro en NULL. Este parámetro se puede usar en Direct3D 9 para Windows Vista para compartir recursos.

Valor devuelto

Tipo: HRESULT

Si el método se realiza correctamente, el valor devuelto es D3D_OK. Si se produce un error en el método, el valor devuelto puede ser uno de los siguientes: D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY.

Comentarios

Se puede usar un búfer de vértices con procesamiento de vértices de hardware o software. Esto viene determinado por cómo se crean el dispositivo y el búfer de vértices.

Cuando se crea un dispositivo, CreateDevice usa la marca de comportamiento para determinar si se van a procesar vértices en hardware o software. Existen tres posibilidades:

  • Procesar vértices en hardware estableciendo D3DCREATE_HARDWARE_VERTEXPROCESSING.
  • Procesar vértices en software estableciendo D3DCREATE_SOFTWARE_VERTEXPROCESSING.
  • Procese vértices en hardware o software estableciendo D3DCREATE_MIXED_VERTEXPROCESSING.
Es posible que los dispositivos en modo mixto necesiten cambiar entre el software y el procesamiento de hardware (mediante IDirect3DDevice9::SetSoftwareVertexProcessing) después de crear el dispositivo.

Cuando se crea un búfer de vértices, CreateVertexBuffer usa el parámetro de uso para decidir si procesar vértices en hardware o software.

  • Si CreateDevice usa D3DCREATE_HARDWARE_VERTEXPROCESSING, CreateVertexBuffer debe usar 0.
  • Si CreateDevice usa D3DCREATE_SOFTWARE_VERTEXPROCESSING, CreateVertexBuffer debe usar 0 o D3DUSAGE_SOFTWAREPROCESSING. Para cualquiera de los valores, los vértices se procesarán en software.
  • Si CreateDevice usa D3DCREATE_MIXED_VERTEXPROCESSING, CreateVertexBuffer puede usar 0 o D3DUSAGE_SOFTWAREPROCESSING.
Para usar un búfer de vértices con un dispositivo de modo mixto, cree un único búfer de vértices que se pueda usar para el procesamiento de hardware o software. Use IDirect3DDevice9::SetStreamSource para establecer el búfer de vértices actual y use IDirect3DDevice9::SetRenderState, si es necesario, para cambiar el comportamiento del dispositivo para que coincida. Se recomienda que el uso del búfer de vértices coincida con el comportamiento del dispositivo. Tenga en cuenta que un búfer de vértices creado para el procesamiento de software no se puede encontrar en la memoria de vídeo.

La interfaz IDirect3DDevice9 admite la representación de primitivos mediante datos de vértices almacenados en objetos de búfer de vértices. Los búferes de vértices se crean a partir de IDirect3DDevice9 y solo se pueden usar con el objeto IDirect3DDevice9 desde el que se crean.

Cuando se establece en un valor distinto de cero, que debe ser un código FVF válido, el parámetro FVF indica que el contenido del búfer se debe caracterizar por un código FVF. Un búfer de vértices que se crea con un código FVF se conoce como búfer de vértices FVF. Para obtener más información, consulte Búferes de vértices de FVF (Direct3D 9).

Los búferes que no son FVF se pueden usar para intercalar datos durante la representación multipaso o la representación multitexture en un solo paso. Para ello, un búfer contiene datos de geometría y los demás contienen coordenadas de textura para cada textura que se va a representar. Cuando se representa, el búfer que contiene los datos de geometría se intercala con cada uno de los búferes que contienen las coordenadas de textura. Si se usaran búferes FVF en su lugar, cada uno de ellos tendría que contener datos de geometría idénticos, además de los datos de coordenadas de textura específicos de cada textura representada. Esto daría lugar a una penalización de velocidad o memoria, dependiendo de la estrategia utilizada. Para obtener más información sobre las coordenadas de textura, vea Coordenadas de textura (Direct3D 9).

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d9helper.h (incluya D3D9.h)
Library D3D9.lib

Consulte también

IDirect3DDevice9

IDirect3DDevice9::P rocessVertices

IDirect3DVertexBuffer9::GetDesc

Búferes de vértices (Direct3D 9)