Condividi tramite


Stampa di un'immagine OpenGL

È possibile stampare immagini OpenGL sottoposte a rendering in metafile avanzati. Quando si esegue il rendering in un dispositivo della stampante (HDC) deve essere supportato da uno spooler di metafile. OpenGL usa la memoria per profondità, colore e altri buffer per archiviare l'output grafico in una stampante. Poiché la risoluzione tipica della stampante richiede una quantità significativa di memoria per archiviare l'output grafico, la stampa di un'immagine OpenGL potrebbe richiedere più memoria di quanto sia disponibile nel sistema. Per superare questa limitazione, l'implementazione corrente di OpenGL stampa grafica OpenGL in bande. Tuttavia, questo aumenta il tempo necessario per stampare immagini OpenGL.

Prima di stampare un'immagine OpenGL, è necessario chiamare la funzione StartDoc per completare l'inizializzazione di un contesto di dispositivo della stampante. Dopo aver chiamato StartDoc, è possibile creare contesti di rendering (HGLRC) per il rendering nel dispositivo della stampante. Se si creano contesti di rendering prima di chiamare StartDoc, non è possibile determinare se è stato eseguito lo spooling di un metafile.

L'esempio di codice seguente illustra come stampare un'immagine OpenGL:

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

Per altre informazioni sull'uso dei metafile, vedere Operazioni metafile avanzate.