estructura D3DHAL_DRAWPRIMITIVES2DATA (d3dhal.h)
La estructura D3DHAL_DRAWPRIMITIVES2DATA contiene la información requerida por la función D3dDrawPrimitives2 para representar primitivos.
Sintaxis
typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
ULONG_PTR dwhContext;
DWORD dwFlags;
DWORD dwVertexType;
LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands;
DWORD dwCommandOffset;
DWORD dwCommandLength;
union {
LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex;
LPVOID lpVertices;
};
DWORD dwVertexOffset;
DWORD dwVertexLength;
DWORD dwReqVertexBufSize;
DWORD dwReqCommandBufSize;
LPDWORD lpdwRStates;
union {
DWORD dwVertexSize;
HRESULT ddrval;
};
DWORD dwErrorOffset;
} D3DHAL_DRAWPRIMITIVES2DATA;
Miembros
dwhContext
Especifica el identificador de contexto del dispositivo Direct3D.
dwFlags
Especifica marcas que proporcionan instrucciones adicionales al controlador o proporcionan información del controlador. Este miembro puede ser un OR bit a bit de los siguientes valores:
Valor | Significado |
---|---|
D3DHALDP2_EXECUTEBUFFER | El comando y los búferes de vértices se crearon en la memoria del sistema. El controlador debe actualizar la matriz de estado a la que apunta lpdwRStates. Esta marca solo se establece mediante Direct3D. |
D3DHALDP2_REQCOMMANDBUFSIZE | El controlador debe poder aumentar el búfer de comandos actual al menos el tamaño especificado en dwReqCommandBufSize. Los controladores que no admiten el multibuffering de búferes de comandos pueden omitir esta marca. Esta marca solo se establece mediante Direct3D. |
D3DHALDP2_REQVERTEXBUFSIZE | El controlador debe poder asignar un búfer de vértices de al menos el tamaño especificado en dwReqCommandBufSize. Los controladores que no admiten el multibuffering de búferes de vértices pueden omitir esta marca. Esta marca solo se establece mediante Direct3D. |
D3DHALDP2_SWAPCOMMANDBUFFER | El controlador puede intercambiar el búfer al que lpDDCommands apunta con un nuevo búfer de comandos y devolver inmediatamente, procesando de forma asincrónica el búfer original mientras Direct3D rellena el nuevo búfer de comandos. Los controladores que no admiten el multibuffering de búferes de comandos pueden omitir esta marca. Esta marca solo se establece mediante Direct3D. |
D3DHALDP2_SWAPVERTEXBUFFER | El controlador puede intercambiar el búfer al que lpDDVertex o lpVertices apunta con un nuevo búfer de vértices y volver inmediatamente, procesando de forma asincrónica el búfer original mientras Direct3D rellena el nuevo búfer de vértices. Los controladores que no admiten el multibuffering de búferes de vértices pueden omitir esta marca. Esta marca solo se establece mediante Direct3D. |
D3DHALDP2_USERMEMVERTICES | El miembro lpVertices es válido, por lo que el controlador debe obtener los datos de vértices de la memoria asignada por el usuario a la que apunta lpVertices. Esta marca solo se establece mediante Direct3D. |
D3DHALDP2_VIDMEMCOMMANDBUF | El búfer de comandos asignado por el controlador como un búfer de intercambio no está en la memoria del sistema. Esta marca se puede establecer mediante controladores que admiten el multibuffering de búferes de comandos. |
D3DHALDP2_VIDMEMVERTEXBUF | El búfer de vértices asignado por el controlador como un búfer de intercambio no está en la memoria del sistema. Esta marca se puede establecer mediante controladores que admiten el multibúfer de búferes de vértices. |
dwVertexType
Identifica el FVF de los datos en el búfer de vértices; es decir, dwVertexType especifica a qué campos de datos por vértice están presentes en el búfer de vértices al que apunta lpDDVertex o lpVertices . Este miembro puede ser un OR bit a bit de los valores de la tabla siguiente. Solo se establece una de las marcas de D3DFVF_TEXx .
Valor | Significado |
---|---|
D3DFVF_DIFFUSE | Cada vértice tiene un color difuso. |
D3DFVF_SPECULAR | Cada vértice tiene un color especular. |
D3DFVF_TEX0 | No se proporcionan coordenadas de textura con los datos de vértices. |
D3DFVF_TEX1 | Cada vértice tiene un conjunto de coordenadas de textura. |
D3DFVF_TEX2 | Cada vértice tiene dos conjuntos de coordenadas de textura. |
D3DFVF_TEX3 | Cada vértice tiene tres conjuntos de coordenadas de textura. |
D3DFVF_TEX4 | Cada vértice tiene cuatro conjuntos de coordenadas de textura. |
D3DFVF_TEX5 | Cada vértice tiene cinco conjuntos de coordenadas de textura. |
D3DFVF_TEX6 | Cada vértice tiene seis conjuntos de coordenadas de textura. |
D3DFVF_TEX7 | Cada vértice tiene siete conjuntos de coordenadas de textura. |
D3DFVF_TEX8 | Cada vértice tiene ocho conjuntos de coordenadas de textura. |
D3DFVF_XYZRHW | Cada vértice tiene coordenadas x, y, z y w. Siempre se establece este marcador. |
lpDDCommands
dwCommandOffset
dwCommandLength
Especifica el número de bytes de datos de comandos válidos en la superficie que lpDDCommands apunta a a partir de dwCommandOffset.
lpDDVertex
Apunta a la estructura DD_SURFACE_LOCAL que identifica la superficie de DirectDraw que contiene los datos de vértice cuando la marca de D3DHALDP2_USERMEMVERTICES no está establecida en dwFlags. Forma una unión con lpVertices.
lpVertices
Apunta a un bloque de memoria en modo de usuario que contiene datos de vértices cuando la marca D3DHALDP2_USERMEMVERTICES se establece en dwFlags.
dwVertexOffset
Especifica el número de bytes en la superficie a la que apunta lpDDVertex o lpVertices donde comienzan los datos del vértice.
dwVertexLength
Especifica el número de vértices para los que existen datos válidos en la superficie a la que apunta lpDDVertex o lpVertices. Estos datos válidos comienzan en dwVertexOffset.
dwReqVertexBufSize
Especifica el número mínimo de bytes que el controlador debe asignar para el búfer de vértices de intercambio. Este miembro solo es válido cuando se establece la marca D3DHALDP2_REQVERTEXBUFSIZE. Los controladores que no admiten el multibúfer de búferes de vértices deben omitir este miembro.
dwReqCommandBufSize
Especifica el número mínimo de bytes por los que el controlador debe aumentar el búfer de comandos de intercambio. Este miembro solo es válido cuando se establece la marca D3DHALDP2_REQCOMMANDBUFSIZE. Los controladores que no admiten el multibuffering de búferes de comandos deben omitir este miembro.
lpdwRStates
Apunta a una matriz de estado de representación que el controlador debe actualizar cuando analiza los comandos de estado de representación del búfer de comandos. El controlador solo debe actualizar esta matriz cuando la marca D3DHALDP2_EXECUTEBUFFER está establecida en dwFlags. El controlador debe usar el D3DRENDERSTATETYPE tipos enumerados para actualizar el elemento adecuado de la matriz de estado de representación.
dwVertexSize
Especifica el tamaño de cada vértice, en bytes. Este miembro forma una unión con ddrval.
ddrval
Especifica la ubicación donde el controlador escribe el valor devuelto de D3dDrawPrimitives2. D3D_OK indica que se ha realizado correctamente. De lo contrario, el controlador debe devolver el código de error D3DERR_Xxx adecuado. Para obtener más información, consulta Códigos de retorno para devoluciones de llamada del controlador de Direct3D.
Valor | Significado |
---|---|
D3D_OK | La operación se ha completado correctamente. |
D3DERR_COMMAND_UNPARSED | El controlador requiere que el entorno de ejecución de Direct3D analice el búfer de ejecución. |
dwErrorOffset
Cada D3DHAL_DP2RESPONSEQUERY va seguida de los siguientes datos relacionados con la consulta:
- BOOL para D3DQUERYTYPE_EVENT
- DWORD para D3DQUERYTYPE_OCCLUSION
- estructura de D3DDEVINFO_VCACHE para D3DQUERYTYPE_VCACHE
Comentarios
Tenga en cuenta que el miembro dwVertexOffset especifica valores en bytes; El miembro dwVertexLength especifica valores en vértices.
Para calcular los datos válidos, en bytes, que existen en la superficie en lpDDVertex o lpVertices, multiplique el valor en dwVertexLength por el valor de dwVertexSize.
Requisitos
Requisito | Valor |
---|---|
Header | d3dhal.h (incluya D3dhal.h) |