PFND3DDDI_COMPOSERECTS función de devolución de llamada (d3dumddi.h)

La función ComposeRects compone áreas bidimensionales de una superficie de origen a una superficie de destino.

Sintaxis

PFND3DDDI_COMPOSERECTS Pfnd3dddiComposerects;

HRESULT Pfnd3dddiComposerects(
  HANDLE hDevice,
  const D3DDDIARG_COMPOSERECTS *unnamedParam2
)
{...}

Parámetros

hDevice

Identificador del dispositivo de visualización (contexto de gráficos).

unnamedParam2

pData [in]

Puntero a una estructura D3DDDIARG_COMPOSERECTS que especifica los parámetros que se usan para componer áreas rectangulares.

Valor devuelto

ComposeRects devuelve uno de los valores siguientes:

Código devuelto Descripción
S_OK Las áreas rectangulares se componeron correctamente.
E_OUTOFMEMORY ComposeRects no pudo asignar la memoria necesaria para que se complete.

Comentarios

Las restricciones y validaciones siguientes se aplican a la función ComposeRects :

  • El controlador debe omitir las áreas rectangulares de origen que no están completamente dentro de la superficie de origen.
  • Las áreas rectangulares de destino(después de aplicar desplazamientos) pueden ser parcialmente o completamente fuera de la superficie de destino. Las áreas rectangulares de destino se recortan si se rechazan parcialmente fuera y se rechazan o se recortan completamente si están completamente fuera.
  • No se puede especificar la misma superficie para el origen y el destino.
  • Las superficies y los búferes de vértices que se usan con ComposeRects no deben bloquearse.
  • Las superficies de origen y destino tienen el formato de un bit por píxel (D3DDDIFMT_A1) cuando se crean.
  • En la compilación de depuración, el entorno de ejecución de Microsoft Direct3D valida que existe una descripción de área rectangular de origen para cada índice en la descripción del área rectangular de destino. En la compilación comercial, ComposeRects devuelve un error si existe un índice no válido.
  • El número de áreas rectangulares debe ser menor que 0xFFFF para evitar el desbordamiento interno durante las operaciones matemáticas.
  • Las superficies y los búferes de vértices deben crearse con el mismo dispositivo de visualización (contexto de gráficos).
  • Se debe especificar la memoria de presentación local para la superficie de destino.
En el código de ejemplo siguiente se muestra una operación que realiza ComposeRects :
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 Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Escritorio
Encabezado d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDIARG_COMPOSERECTS

D3DDDI_DEVICEFUNCS