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) |