Поделиться через


Печать изображения OpenGL

Изображения OpenGL можно распечатать в расширенных метафайлах. При выводе на печать с помощью устройства принтера (HDC), оно должно поддерживаться метафайловым спулером. OpenGL использует память для глубины, цвета и других буферов для хранения выходных данных графики на принтере. Так как обычное разрешение принтера требует значительного объема памяти для хранения выходных данных графики, печать изображения OpenGL может потребовать больше памяти, чем доступно в системе. Чтобы преодолеть это ограничение, текущая реализация OpenGL печатает графику OpenGL в полосах. Однако это увеличивает время печати изображений OpenGL.

Перед печатью изображения OpenGL необходимо вызвать функцию StartDoc, чтобы завершить инициализацию контекста устройства принтера (DC). После вызова StartDocможно создать контексты рендеринга (HGLRC) для вывода на устройстве принтера. Если вы создаете контексты отрисовки перед вызовом StartDoc, невозможно определить, является ли метафайл спуленным.

В следующем примере кода показано, как распечатать изображение 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

Для получения дополнительной информации об использовании метафайлов см. раздел Операции с улучшенными метафайлами.