Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 Verfassen rechteckiger Bereiche verwendet werden.
Rückgabewert
ComposeRects gibt einen der folgenden Werte zurück:
| Rückgabecode | Beschreibung |
|---|---|
| S_OK | Die rechteckigen Bereiche wurden erfolgreich zusammengesetzt. |
| E_OUTOFMEMORY | ComposeRects- konnte den erforderlichen Arbeitsspeicher nicht zuordnen, damit er abgeschlossen werden kann. |
Bemerkungen
Die folgenden Einschränkungen und Überprüfungen gelten für die funktion ComposeRects:
- Der Treiber sollte die rechteckigen Quellbereiche ignorieren, die sich nicht vollständig innerhalb der Quelloberfläche befinden.
- Die rechteckigen Zielbereiche - nach dem Anwenden von Offsets - können teilweise oder vollständig außerhalb der Zieloberfläche sein. Die rechteckigen Zielbereiche werden abgeschnitten, wenn sie teilweise außerhalb liegen und abgelehnt oder vollständig abgeschnitten werden, wenn sie vollständig außen sind.
- Die gleiche Oberfläche kann nicht für die Quelle und das Ziel angegeben werden.
- Surfaces 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-Laufzeit, ob für jeden Index in der Beschreibung des rechteckigen Zielbereichs eine Beschreibung des rechteckigen Quellbereichs vorhanden ist. Im 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 den internen Überlauf während mathematischer Vorgänge zu verhindern.
- Surfaces 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 |
|---|---|
| mindestens unterstützte Client- | Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme. |
| Zielplattform- | Desktop |
| Header- | d3dumddi.h (include D3dumddi.h) |