Drucken eines OpenGL-Bilds
Sie können OpenGL-Bilder drucken, die in erweiterten Metadateien gerendert werden. Wenn Sie auf einem Druckergerät (HDC) rendern, muss es von einem Metadatei-Spooler unterstützt werden. OpenGL verwendet Arbeitsspeicher für Tiefe, Farbe und andere Puffer, um Grafikausgabe auf einem Drucker zu speichern. Da für die typische Druckerauflösung eine beträchtliche Menge an Arbeitsspeicher zum Speichern der Grafikausgabe erforderlich ist, ist für das Drucken eines OpenGL-Bilds möglicherweise mehr Arbeitsspeicher erforderlich, als im System verfügbar ist. Um diese Einschränkung zu umgehen, druckt die aktuelle Implementierung von OpenGL OpenGL-Grafiken in Bändern. Dies erhöht jedoch die Zeit, die zum Drucken von OpenGL-Bildern benötigt wird.
Bevor Sie ein OpenGL-Image drucken, müssen Sie die StartDoc-Funktion aufrufen, um die Initialisierung eines Druckergerätekontexts (DC) abschließen zu können. Nach dem Aufruf von StartDoc können Sie Renderingkontexte (HGLRC) erstellen, um sie auf dem Druckergerät zu rendern. Wenn Sie Renderingkontexte erstellen, bevor Sie StartDoc aufrufen, gibt es keine Möglichkeit zu bestimmen, ob eine Metadatei in einen Pool gestellt wird.
Das folgende Codebeispiel zeigt, wie Sie ein OpenGL-Bild drucken:
HDC hDC;
DOCINFO di;
HGLRC hglrc;
// Call StartDoc to start the document
StartDoc( hDC, &di );
// Prepare the printer driver to accept data
StartPage(hDC);
// Create a rendering context using the metafile DC
hglrc = wglCreateContext ( hDCmetafile );
// Do OpenGL rendering operations here
. . .
wglMakeCurrent(NULL, NULL); // Get rid of rendering context
. . .
EndPage(hDC); // Finish writing to the page
EndDoc(hDC); // End the print job
Weitere Informationen zur Verwendung von Metadateien finden Sie unter Erweiterte Metadateivorgänge.