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)

Consulte también

D3DHAL_DP2COMMAND

D3DRENDERSTATETYPE

D3dDrawPrimitives2

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL