Portieren von Gerätekontexten und Pixelformaten

Jedes Fenster in der Microsoft-Implementierung von OpenGL for Windows hat ein eigenes aktuelles Pixelformat. Ein Pixelformat wird durch eine PIXELFORMATDESCRIPTOR-Datenstruktur definiert. Da jedes Fenster über ein eigenes Pixelformat verfügt, erhalten Sie einen Gerätekontext, legen das Pixelformat des Gerätekontexts fest und erstellen dann einen OpenGL-Renderingkontext für den Gerätekontext. Der Renderingkontext verwendet automatisch das Pixelformat seines Gerätekontexts.

Das X-Fenstersystem verwendet auch die Datenstruktur XVisualInfo, um die Eigenschaften von Pixeln in einem Fenster anzugeben. XVisualInfo-Strukturen enthalten eine visuelle Datenstruktur, die beschreibt, wie Farbressourcen auf einem bestimmten Bildschirm verwendet werden.

Im X-Fenstersystem wird XVisualInfo verwendet, um ein Fenster zu erstellen, indem das Fenster auf das von Ihnen verwendete Pixelformat festlegen. Die zurückgegebene -Struktur wird verwendet, um das Fenster und einen Renderingkontext zu erstellen. In Windows erstellen Sie zunächst ein Fenster und erhalten ein Handle für einen Gerätekontext (HDC) des Fensters. Der HDC wird dann zum Festlegen des Pixelformats für das Fenster verwendet. Der Renderingkontext verwendet das Pixelformat des Fensters.

In der folgenden Tabelle werden die visuellen Funktionen X Window System und GLX mit den entsprechenden Windows Pixelformatfunktionen verglichen.

Visuelle X-Fenster-/GLX-Funktion Windows Pixelformatfunktion
XVisualInfo * glXChooseVisual( * Dpy anzeigen,int screen,int * attribList) int ChoosePixelFormat( HDC hdc, PIXELFORMATDESCRIPTOR * ppfd)
int glXGetConfig( * dpy,XVisualInfo * vis,int * attribList,int * value) int DescribePixelFormat( HDC hdc,int iPixelFormat,UINT nBytes,LXELXELFORMATDESCRIPTOR ppfd)
XVisualInfo * XGetVisualInfo( * Dpy anzeigen , lange _ vinfo-Maske, XVisualInfo * vinfo _ templ, int * ): int GetPixelFormat( HDC hdc)
Das von glxChooseVisual zurückgegebene Visual wird verwendet, wenn ein Fenster erstellt wird. BOOL SetPixelFormat( HDC hdc, int iPixelFormat, PIXELFORMATDESCRIPTOR * ppfd)

In den folgenden Abschnitten finden Sie Beispiele für Codefragmente im Pixelformat für ein X Window System-Programm und denselben Code, nachdem es in ein X-Fenstersystemprogramm portiert Windows.

Weitere Informationen zu Pixelformaten finden Sie unter Pixelformate.