Compartilhar via


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.
O código de exemplo a seguir mostra uma operação que o ComposeRects executa:
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)

Confira também

D3DDDIARG_COMPOSERECTS

D3DDDI_DEVICEFUNCS