glAddSwapHintRectWIN

Aus DGL Wiki
Version vom 4. Juni 2008, 20:47 Uhr von Thoronador (Diskussion | Beiträge) (Kleinere Korrekturen (u.a. Zeichensetzung))

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

glAddSwapHintRectWIN

Name

glAddSwapHintRectWIN - Spezifiziert einen Satz von rechteckigen Bereichen im Framebuffer, die durch SwapBuffers kopiert werden sollen.


Delphi-Spezifikation

procedure glAddSwapHintRectWIN(x: TGLint; y: TGLint; width: TGLsizei; height: TGLsizei);


Parameter

x,y Gibt die Position der linken unteren Ecke (in Fensterkoordinaten) des Markierungsrechtecks an.
width, height Gibt die Ausmaße des Markierungsrechtecks an.


Beschreibung

Mit der Funktion glAddSwapHintRectWIN können Sie Bereiche des Framebuffers auswählen, die beim nächsten Aufruf von SwapBuffers ausgegeben werden sollen. Durch dieses Vorgehen können Sie die Zeichengeschwindigkeit signifikant erhöhen, denn nur die Bereiche, die Sie spezifiziert haben, werden neu gezeichnet. Dies wirkt sich vorallem aus, wenn SwapBuffers in Software implementiert ist. Wenn mittels glAddSwapHintRectWIN kein Bereich gesetzt wurde, wird der gesamte Framebuffer angezeigt.

Durch glAddSwapHintRectWIN fügen Sie ein neues Rechteck zum Markierungsbereich (org.: Hint Region) hinzu. Wenn das PFD_SWAP_COPY-Flag der Pixelformatstruktur (siehe PIXELFORMATDESCRIPTOR) gesetzt ist, nutzt SwapBuffers diese Bereiche, um den Kopiervorgang vom Backbuffer in den Frontbuffer einzuschränken (für Infos zu den Puffern siehe Doppelpufferung). Das PFD_SWAP_COPY-Flag wird nicht von Ihnen - dem Programmierer - sondern von entsprechender Hardware gesetzt.

Die Markierungsbereiche werden nach jedem Aufruf von SwapBuffers geleert.

Bei einigen Hardwareconfiguartionen kann SwapBuffers die Markierungsbereiche ignorieren und den gesammten Framebuffer austauschen. (SwapBuffers wird vom System bereitgestellt, nicht von einer Anwendung.)

OpenGL behält für jedes Fenster nur einen eigenen Markierungsbereich. Durch den Aufruf von glAddSwapHintRectWIN in einem Renderkontext, der an ein Fenster gebunden ist, wird das neue Markierungsrechteck mit dem bereits bestehenden Markierungsbereich kombiniert.


Benutzen Sie glAddSwapHintRectWIN so, dass sie nur die Bereiche neu zeichnen, in denen sich tatsächlich etwas ändert. (Das sind entweder Sachen, die sich bewegen oder Dinge aus dem letzten Frame, die gelöscht werden sollen.)


Hinweise

glAddSwapHintRectWIN ist eine Extensionfunktion, die nicht Teil des Kerns der OpenGL-Bibiothek ist. Aber Sie ist Teil der GL_WIN_swap_hint-Extension. Um zu prüfen, ob Ihre Implementation von OpenGL glAddSwapHintRectWIN unterstützt, rufen sie glGetString(GL_EXTENSIONS) auf. Wenn der zurückgelieferte String GL_WIN_swap_hint enthält, wird glAddSwapHintRectWIN unterstützt. Um die Adresse einer Extensionfunktion zu ermitteln, rufen Sie wglGetProcAddress auf.


Siehe auch

glGetString, PIXELFORMATDESCRIPTOR, SwapBuffers, wglGetProcAddress