PFND3DDDI_COMPOSERECTS função de retorno de chamada (d3dumddi.h)
A função ComposeRects compõe áreas bidimensionais de uma superfície de origem para uma superfície de destino.
Sintaxe
PFND3DDDI_COMPOSERECTS Pfnd3dddiComposerects;
HRESULT Pfnd3dddiComposerects(
HANDLE hDevice,
const D3DDDIARG_COMPOSERECTS *unnamedParam2
)
{...}
Parâmetros
hDevice
Um identificador para o dispositivo de exibição (contexto gráfico).
unnamedParam2
pData [in]
Um ponteiro para uma estrutura D3DDDIARG_COMPOSERECTS que especifica os parâmetros usados para compor áreas retangulares.
Retornar valor
ComposeRects retorna um dos seguintes valores:
Código de retorno | Descrição |
---|---|
S_OK | As áreas retangulares foram compostas com êxito. |
E_OUTOFMEMORY | ComposeRects não foi possível alocar a memória necessária para que ela fosse concluída. |
Comentários
As seguintes restrições e validações se aplicam à função ComposeRects :
- O driver deve ignorar as áreas retangulares de origem que não estão completamente dentro da superfície de origem.
- As áreas retangulares de destino, após a aplicação de deslocamentos, podem estar parcial ou completamente fora da superfície de destino. As áreas retangulares de destino são recortadas se parcialmente fora e rejeitadas ou completamente recortadas se completamente fora.
- A mesma superfície não pode ser especificada para a origem e o destino.
- Superfícies e buffers de vértice usados com ComposeRects não devem ser bloqueados.
- As superfícies de origem e destino são formatadas como um bit por pixel (D3DDDIFMT_A1) quando são criadas.
- No build de depuração, o runtime do Microsoft Direct3D valida que existe uma descrição da área retangular de origem para cada índice na descrição da área retangular de destino. No build de varejo, ComposeRects retornará um erro se houver um índice inválido.
- O número de áreas retangulares deve ser menor que 0xFFFF para evitar estouro interno durante operações matemáticas.
- Superfícies e buffers de vértice devem ser criados usando o mesmo dispositivo de exibição (contexto gráfico).
- A memória de exibição local deve ser especificada para a superfície de destino.
for (UINT i=0; i < COMPOSERECTS.NumDstRects; i++) {
if (i >= Size(VertexBuffer(hDstRectDescsVB)) / sizeof(D3DCOMPOSERECTDSTDESC))
Ignore the rectangle;
if (VertexBuffer(hDstRectDescsVB)[i].RectDescIndex >= Size(VertexBuffer(hSrcRectDescsVB)) / sizeof(D3DCOMPOSERECTSRCDESC))
Ignore the rectangle;
SourceRectangle = VertexBuffer(hSrcResource)[VertexBuffer(hDstRectDescsVB)[i].RectDescIndex];
DestinationRectangle.X = {VertexBuffer(hDstRectDescsVB)[i].X + COMPOSERECTS.Xoffset;
DestinationRectangle.Y = {VertexBuffer(hDstRectDescsVB)[i].Y + COMPOSERECTS.Yoffset;
DestinationRectangle.Width = SourceRectangle.Width;
DestinationRectangle.Height = SourceRectangle.Height;
Perform COMPOSERECTS.Operation for each pixel;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | d3dumddi.h (inclua D3dumddi.h) |