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