Partilhar via


estrutura D3DHAL_DRAWPRIMITIVES2DATA (d3dhal.h)

A estrutura de D3DHAL_DRAWPRIMITIVES2DATA contém as informações exigidas pela função D3dDrawPrimitives2 para renderizar primitivos.

Sintaxe

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;

Membros

dwhContext

Especifica o identificador de contexto do dispositivo Direct3D.

dwFlags

Especifica sinalizadores que fornecem instruções adicionais ao driver ou fornecem informações do driver. Esse membro pode ser um OR bit a bit dos seguintes valores:

Valor Significado
D3DHALDP2_EXECUTEBUFFER Os buffers de comando e vértice foram criados na memória do sistema. O driver deve atualizar a matriz de estado para a qual lpdwRStates aponta. Esse sinalizador é definido apenas pelo Direct3D.
D3DHALDP2_REQCOMMANDBUFSIZE O driver deve ser capaz de aumentar o buffer de comando atual pelo menos pelo tamanho especificado em dwReqCommandBufSize. Os drivers que não dão suporte a vários buffers de comando podem ignorar esse sinalizador. Esse sinalizador é definido apenas pelo Direct3D.
D3DHALDP2_REQVERTEXBUFSIZE O driver deve ser capaz de alocar um buffer de vértice de pelo menos o tamanho especificado em dwReqCommandBufSize. Os drivers que não dão suporte a vários buffers de vértice podem ignorar esse sinalizador. Esse sinalizador é definido apenas pelo Direct3D.
D3DHALDP2_SWAPCOMMANDBUFFER O driver pode trocar o buffer para o qual lpDDCommands aponta com um novo buffer de comando e retornar imediatamente, processando de forma assíncrona o buffer original enquanto o Direct3D preenche o novo buffer de comando. Os drivers que não dão suporte a vários buffers de comando podem ignorar esse sinalizador. Esse sinalizador é definido apenas pelo Direct3D.
D3DHALDP2_SWAPVERTEXBUFFER O driver pode trocar o buffer para o qual lpDDVertex ou lpVertices aponta com um novo buffer de vértice e retornar imediatamente, processando de forma assíncrona o buffer original enquanto o Direct3D preenche o novo buffer de vértice. Os drivers que não dão suporte a vários buffers de vértice podem ignorar esse sinalizador. Esse sinalizador é definido apenas pelo Direct3D.
D3DHALDP2_USERMEMVERTICES O membro lpVertices é válido, portanto, o driver deve obter os dados de vértice da memória alocada pelo usuário para a qual o lpVertices aponta. Esse sinalizador é definido apenas pelo Direct3D.
D3DHALDP2_VIDMEMCOMMANDBUF O buffer de comando alocado pelo driver como um buffer de troca não está na memória do sistema. Esse sinalizador pode ser definido por drivers que dão suporte a vários buffers de comando.
D3DHALDP2_VIDMEMVERTEXBUF O buffer de vértice alocado pelo driver como um buffer de troca não está na memória do sistema. Esse sinalizador pode ser definido por drivers que dão suporte ao multibuffering de buffers de vértice.

dwVertexType

Identifica o FVF dos dados no buffer de vértice; ou seja, dwVertexType especifica quais campos de dados por vértice estão presentes no buffer de vértice que lpDDVertex ou lpVertices aponta. Esse membro pode ser um OR bit a bit dos valores na tabela a seguir. Apenas um dos sinalizadores de D3DFVF_TEXx está definido.

Valor Significado
D3DFVF_DIFFUSE Cada vértice tem uma cor difusa.
D3DFVF_SPECULAR Cada vértice tem uma cor especular.
D3DFVF_TEX0 Nenhuma coordenada de textura é fornecida com os dados de vértice.
D3DFVF_TEX1 Cada vértice tem um conjunto de coordenadas de textura.
D3DFVF_TEX2 Cada vértice tem dois conjuntos de coordenadas de textura.
D3DFVF_TEX3 Cada vértice tem três conjuntos de coordenadas de textura.
D3DFVF_TEX4 Cada vértice tem quatro conjuntos de coordenadas de textura.
D3DFVF_TEX5 Cada vértice tem cinco conjuntos de coordenadas de textura.
D3DFVF_TEX6 Cada vértice tem seis conjuntos de coordenadas de textura.
D3DFVF_TEX7 Cada vértice tem sete conjuntos de coordenadas de textura.
D3DFVF_TEX8 Cada vértice tem oito conjuntos de coordenadas de textura.
D3DFVF_XYZRHW Cada vértice tem coordenadas x, y, z e w. Esse sinalizador está sempre definido.

lpDDCommands

dwCommandOffset

dwCommandLength

Especifica o número de bytes de dados de comando válidos na superfície que lpDDCommands aponta para começar em dwCommandOffset.

lpDDVertex

Aponta para a estrutura DD_SURFACE_LOCAL que identifica a superfície DirectDraw que contém os dados de vértice quando o sinalizador de D3DHALDP2_USERMEMVERTICES não é definido em dwFlags. Forma uma união com lpVertices.

lpVertices

Aponta para um bloco de memória no modo de usuário que contém dados de vértice quando o sinalizador de D3DHALDP2_USERMEMVERTICES é definido em dwFlags.

dwVertexOffset

Especifica o número de bytes na superfície apontado por lpDDVertex ou lpVertices em que os dados de vértice são iniciados.

dwVertexLength

Especifica o número de vértices para os quais existem dados válidos na superfície apontada por lpDDVertex ou lpVertices. Esses dados válidos começam em dwVertexOffset.

dwReqVertexBufSize

Especifica o número mínimo de bytes que o driver deve alocar para o buffer de vértice de troca. Esse membro é válido somente quando o sinalizador de D3DHALDP2_REQVERTEXBUFSIZE é definido. Os drivers que não dão suporte a vários buffers de vértice devem ignorar esse membro.

dwReqCommandBufSize

Especifica o número mínimo de bytes em que o driver deve aumentar o buffer de comando de troca. Esse membro é válido somente quando o sinalizador de D3DHALDP2_REQCOMMANDBUFSIZE é definido. Os drivers que não dão suporte a vários buffers de comando devem ignorar esse membro.

lpdwRStates

Aponta para uma matriz de estado de renderização que o driver deve atualizar quando analisa os comandos de estado de renderização do buffer de comando. O driver deve atualizar essa matriz somente quando o sinalizador de D3DHALDP2_EXECUTEBUFFER estiver definido em dwFlags. O driver deve usar o D3DRENDERSTATETYPE tipos enumerados para atualizar o elemento apropriado da matriz de estado de renderização.

dwVertexSize

Especifica o tamanho de cada vértice, em bytes. Esse membro forma uma união com ddrval.

ddrval

Especifica o local em que o driver grava o valor retornado de D3dDrawPrimitives2. D3D_OK indica êxito. Caso contrário, o driver deverá retornar o código de erro D3DERR_Xxx apropriado. Para obter mais informações, consulte códigos de retorno para retornos de chamada de driver Direct3D.

Valor Significado
D3D_OK A operação foi concluída com êxito.
D3DERR_COMMAND_UNPARSED O driver requer o runtime do Direct3D para analisar o buffer de execução.

dwErrorOffset

Cada D3DHAL_DP2RESPONSEQUERY é seguido pelos seguintes dados relacionados à consulta:

  • BOOL para D3DQUERYTYPE_EVENT
  • DWORD para D3DQUERYTYPE_OCCLUSION
  • estrutura D3DDEVINFO_VCACHE para D3DQUERYTYPE_VCACHE

Observações

Observe que o membro dwVertexOffset especifica valores em bytes; o membro dwVertexLength especifica valores em vértices.

Para calcular os dados válidos, em bytes, que existem na superfície em lpDDVertex ou lpVertices, multiplique o valor em dwVertexLength pelo valor em dwVertexSize.

Requisitos

Requisito Valor
cabeçalho d3dhal.h (inclua D3dhal.h)

Consulte também

D3DHAL_DP2COMMAND

D3DRENDERSTATETYPE

D3dDrawPrimitives2

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL