Home · All Classes · Main Classes · Grouped Classes · Modules · Functions

[Предыдущая: Модуль QtNetwork] [Модули Qt] [Следующая: Модуль QtSql]

Модуль QtOpenGL

Модуль QtOpenGL предоставляет классы, которые могут облегчить использование OpenGL в приложениях Qt. Далее...

Пространства Имен

QGLРазличные идентификаторы используемые в модуле Qt OpenGL

Классы

QGLColormapИспользуется для установки собственных цветовых карт в QGLWidgets
QGLContextЗаключает в себе контекст рисования OpenGL
QGLFormatФормат отображения контекста рисования OpenGL
QGLPixelBufferЗаключает в себе пиксельный буфер OpenGL
QGLWidgetВиджет для отображения графики OpenGL

Подробное Описание

Модуль QtOpenGL предоставляет классы, которые могут облегчить использование OpenGL в приложениях Qt.

OpenGL является стандартным API для отображения трехмерной графики. OpenGL имеет дело только с трехмерным рисованием и предоставляет очень слабую поддержку (или не предоставляет ее вовсе) для решения проблем GUI-программирования. Интерфейс пользователя для OpenGL-приложений должен быть создан с помощью других инструментов, таких как Motif в платформе X, Microsoft Foundation Classes (MFC) в Windows, или Qt на обоих платформах.

Обратите внимание: OpenGL является торговой маркой Silicon Graphics в Соединенных Штатах и других странах.

Модуль Qt OpenGL облегчает использование OpenGL в Qt-приложениях. Он предоставляет классы виджетов OpenGL, которые могут использоваться, за исключением буфера дисплея OpenGL, в котором Вы можете для отображения содержимого использовать API OpenGL, также, как другие виджеты Qt.

Для включения определений классов модуля, используйте следующую директиву:

    #include <QtOpenGL>

Для линковки приложения с этим модулем, добавьте в Ваш qmake .proфайл строку:

    QT += opengl

Модуль Qt OpenGL реализует платформо-независимую Qt/C++ оболочку вокруг платформо-зависимых Qt/C++ GLX WGL, или AGL C API. Предоставляемая функциональность очень похожа на библиотеку Mark Kilgard GLUT, но имеет дополнительную не-OpenGL-специфичкескую GUI-функциональность, т.е. полный API Qt.

Внимание: Модуль QtOpenGL входит в состав Qt Desktop Edition и Qt Open Source Edition. Он доступен в Windows, X11 и Mac OS X. Модуль не входит в состав Qtopia Core.

Установка

При установке Qt в X11, скрипт конфигурирования пытается автоматически обнаружить, утановлены ли в системе заголовочные файлы и библиотеки OpenGL, и, если это так, он включает модуль Qt OpenGL в библиотеку Qt. (Если Ваши заголовочные файлы и библиотеки OpenGL размещены в необычной директории, то Вам может потребоваться изменение переменных QMAKE_INCDIR_OPENGL и/или QMAKE_LIBDIR_OPENGL в файле контфигурации для Вашей системы).

При установке Qt в Windows и Mac OS X, модуль Qt OpenGL всегда включается. Пользователям X11, возможно будет полезным прочитать замечания относительно оверлейных программ, приведенные ниже.

Документация по QGL предполагает, что Вы знакомы с программированием OpenGL. Если оно Вам не знакомо, то хорошей отправной точкой станет ресурс http://www.opengl.org/.

Использование X11 Оверлеев с Qt

Оверлеи X11 - это мощный механизм для рисования поверх рисунков без их разрушения, они сохраняют во время рисования большую часть изображения. За дополнительной информацией настоятельно рекомендуем Вам обратиться к книге OpenGL Programming for the X Window System (Mark Kilgard, Addison Wesley Developers Press 1996).

Внимание: Qt OpenGL Extension включает прямую поддержку использования оверлеев OpenGL. Для большинства случаев использования оверлеев техника, описанная ниже, избыточна. Далее следует обсуждение использования не-QGL виджетов в оверлейных планах.

Обычно, оверлеи X11 легко могут использоваться с текущей версией Qt и Qt OpenGL Extension. Следующие требования применяются в случаях, когда:

  1. Ваш X-сервер и графические карта/оборудование должны поддерживать оверлеи. Для многих X-серверов поддержка оверлеев может быть включена в настройках конфигурации; обратитесь к документации по установке Вашего X-сервера.
  2. Ваш X-сервер должен (может быть настроен) использовать оверлейную визуализация как средство визуализации по умолчанию. Большинство современных X-серверов это делают, так как это дает дополнительное преимущество при использовании выпадающих меню, перекрывающихся окон и т.д., которые не будут изменять нижележащее изображение основного плана, таким образом избегая дорогостоящих перерисовок.
  3. Лучшая (более глубокая) визуализация изображений OpenGL расположена в основном плане. Это нормальная ситуация. Обычно, X-сервер, поддерживающий оверлеи, предоставляет 24-битную TrueColor визуализация в основном плане, и 8-битную PseudoColor (по умолчанию) визуализацию в оверлейном плане.

Если все вышеперечисленные требования выполнены, QGLWidget по умолчанию будет использовать визуализацию в основном плане, в то время как все другие виджеты будут использовать оверлейную визуализацию. Таким образом, мы можем размещать обычные виджеты поверх QGLWidget, и выполнять рисование в них без воздействия на изображение в окне OpenGL. Другими словами, мы можем использовать все возможности рисования QPainter для отображения комментариев, линий и т.д. Для типичного использования оверлейных программ, это намного легче, чем применять OpenGL для рисования надписей.

Оверлейный план имеет специальный цвет, называемый прозрачным цветом. Пиксели нарисованные этим цветом не видны; вместо них будет показан нижележащий рисунок OpenGL.

Для применении этой техники, Вы не должны использовать для QApplication цветовые спецификации QApplication::ManyColor или QApplication::TrueColor, так как это вынудит обычные виджеты Qt использовать TrueColor-визуализацию, которая обычно должна быть в основном плане, а в оверлейном нежелательна.

[Предыдущая: Модуль QtNetwork] [Модули Qt] [Следующая: Модуль QtSql]


Copyright © 2005 Trolltech Trademarks
Qt 4.1.0
Hosted by uCoz