estrutura D3DHAL_DRAWPRIMITIVES2DATA (d3dhal.h)
A estrutura 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 multibuffering de 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. Drivers que não dão suporte a multibuffering de 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 multibuffering de 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 o buffer original de forma assíncrona enquanto o Direct3D preenche o novo buffer de vértice. Drivers que não dão suporte a multibuffering de 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 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 multibuffering de 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 a 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 para o qual 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 é 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çando 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 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 D3DHALDP2_USERMEMVERTICES é definido em dwFlags.
dwVertexOffset
Especifica o número de bytes na superfície apontada 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 só é válido quando o sinalizador D3DHALDP2_REQVERTEXBUFSIZE é definido. Os drivers que não dão suporte a multibuffering de buffers de vértice devem ignorar esse membro.
dwReqCommandBufSize
Especifica o número mínimo de bytes pelos quais o driver deve aumentar o buffer de comando de troca. Esse membro só é válido quando o sinalizador D3DHALDP2_REQCOMMANDBUFSIZE é definido. Os drivers que não dão suporte a multibuffering de 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 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 Retornar códigos para retornos de chamada do driver Direct3D.
Valor | Significado |
---|---|
D3D_OK | A operação foi concluída com sucesso. |
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
Comentários
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) |