Печать изображения 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
Для получения дополнительной информации об использовании метафайлов см. раздел Операции с улучшенными метафайлами.