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


Печать образа 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

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