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.
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.
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::P rocessVertices