Freigeben über


Drucken eines OpenGL-Images

Sie können OpenGL-Bilder drucken, die in erweiterten Metadateien gerendert werden. Wenn Sie auf einem Druckergerät (HDC) rendern, muss es von einem Metadateispooler unterstützt werden. OpenGL verwendet Arbeitsspeicher für Tiefe, Farbe und andere Puffer, um die Grafikausgabe auf einem Drucker zu speichern. Da die typische Druckerauflösung eine erhebliche Menge an Arbeitsspeicher zum Speichern der Grafikausgabe erfordert, erfordert das Drucken eines OpenGL-Bilds möglicherweise mehr Arbeitsspeicher, als im System verfügbar ist. Um diese Einschränkung zu überwinden, 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-Bild drucken, müssen Sie die StartDoc-Funktion aufrufen, um die Initialisierung eines Druckergerätekontexts (Dc) abzuschließen. Nach dem Aufrufen von StartDoc können Sie Renderingkontexte (HGLRC) erstellen, die auf dem Druckergerät gerendert werden. Wenn Sie Vor dem Aufrufen von StartDoc Renderingkontexte erstellen, gibt es keine Möglichkeit, zu bestimmen, ob eine Metadatei in einem Spooling ausgeführt wird.

Im folgenden Codebeispiel wird das Drucken eines OpenGL-Bilds veranschaulicht:

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.