Compartilhar via


Imprimindo uma imagem OpenGL

Você pode imprimir imagens OpenGL renderizadas em metarquivos aprimorados. Quando você renderiza em um dispositivo de impressora (HDC), ele deve ter o suporte de um spooler de metarquivo. O OpenGL usa memória para profundidade, cor e outros buffers para armazenar a saída gráfica em uma impressora. Como a resolução típica da impressora requer uma quantidade significativa de memória para armazenar a saída gráfica, imprimir uma imagem OpenGL pode exigir mais memória do que a disponível no sistema. Para superar essa limitação, a implementação atual do OpenGL imprime elementos gráficos OpenGL em bandas. No entanto, isso aumenta o tempo necessário para imprimir imagens OpenGL.

Antes de imprimir uma imagem OpenGL, você deve chamar a função StartDoc para concluir a inicialização de um DC (contexto de dispositivo de impressora). Depois de chamar StartDoc, você pode criar contextos de renderização (HGLRC) para renderizar no dispositivo de impressora. Se você criar contextos de renderização antes de chamar StartDoc, não haverá como determinar se um metarquivo está em spool.

O exemplo de código a seguir mostra como imprimir uma imagem 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

Para obter mais informações sobre como usar metarquivos, consulte Operações avançadas de metarquivo.