PFND3DDDI_COMPOSERECTS Rückruffunktion (d3dumddi.h)
Die ComposeRects-Funktion erstellt zweidimensionale Bereiche von einer Quelloberfläche zu einer Zieloberfläche.
Syntax
PFND3DDDI_COMPOSERECTS Pfnd3dddiComposerects;
HRESULT Pfnd3dddiComposerects(
HANDLE hDevice,
const D3DDDIARG_COMPOSERECTS *unnamedParam2
)
{...}
Parameter
hDevice
Ein Handle für das Anzeigegerät (Grafikkontext).
unnamedParam2
pData [in]
Ein Zeiger auf eine D3DDDIARG_COMPOSERECTS-Struktur , die die Parameter angibt, die zum Zusammenstellen rechteckiger Bereiche verwendet werden.
Rückgabewert
ComposeRects gibt einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
S_OK | Die rechteckigen Bereiche wurden erfolgreich zusammengestellt. |
E_OUTOFMEMORY | ComposeRects konnte nicht den erforderlichen Arbeitsspeicher zuweisen, um ihn zu vervollständigen. |
Hinweise
Die folgenden Einschränkungen und Überprüfungen gelten für die ComposeRects-Funktion :
- Der Treiber sollte die rechteckigen Quellbereiche ignorieren, die sich nicht vollständig innerhalb der Quelloberfläche befinden.
- Die rechteckigen Zielbereiche können - nach dem Anwenden von Offsets - teilweise oder vollständig außerhalb der Zieloberfläche liegen. Die rechteckigen Zielbereiche werden abgeschnitten, wenn sie teilweise außerhalb und verworfen oder ganz außerhalb abgeschnitten werden.
- Die gleiche Oberfläche kann nicht für die Quelle und das Ziel angegeben werden.
- Oberflächen und Vertexpuffer, die mit ComposeRects verwendet werden, sollten nicht gesperrt werden.
- Die Quell- und Zieloberflächen werden beim Erstellen als ein Bit pro Pixel (D3DDDIFMT_A1) formatiert.
- Im Debugbuild überprüft die Microsoft Direct3D-Runtime, ob eine Rechteckige Quellbereichsbeschreibung für jeden Index in der Beschreibung des rechteckigen Zielbereichs vorhanden ist. Beim Einzelhandelsbuild gibt ComposeRects einen Fehler zurück, wenn ein ungültiger Index vorhanden ist.
- Die Anzahl der rechteckigen Bereiche sollte kleiner als 0xFFFF sein, um einen internen Überlauf während mathematischer Vorgänge zu verhindern.
- Oberflächen und Vertexpuffer sollten mit demselben Anzeigegerät (Grafikkontext) erstellt werden.
- Der lokale Anzeigespeicher sollte für die Zieloberfläche angegeben werden.
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;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme. |
Zielplattform | Desktop |
Kopfzeile | d3dumddi.h (include D3dumddi.h) |