Qt:Документация 4.3.2/qtopengl
Материал из Wiki.crossplatform.ru
Root (Обсуждение | вклад) (Новая: {{Qt4.3.2_header}} [Предыдущая: Модуль QtNetwork] [ Модули Qt ] [...) |
Root (Обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
{{Qt4.3.2_header}} | {{Qt4.3.2_header}} | ||
- | [Предыдущая: [[Qt:Документация 4.3.2/qtnetwork | Модуль QtNetwork]]] [ [[Qt:Документация 4.3.2/modules | Модули Qt]] ] [Следующая: [[Qt:Документация 4.3.2/qtsql | Модуль QtSql]]] | + | |
+ | [Предыдущая: [[Qt:Документация 4.3.2/qtnetwork | Модуль QtNetwork]] ] [ [[Qt:Документация 4.3.2/modules | Модули Qt]] ] [Следующая: [[Qt:Документация 4.3.2/qtsql | Модуль QtSql]] ] | ||
=Модуль QtOpenGL<br />= | =Модуль QtOpenGL<br />= | ||
Строка 6: | Строка 7: | ||
==Пространства имен== | ==Пространства имен== | ||
- | |||
{| width="100%" class="annotated" cellpadding="2" cellspacing="1" border="0" | {| width="100%" class="annotated" cellpadding="2" cellspacing="1" border="0" | ||
|- valign="top" class="odd" | | |- valign="top" class="odd" | | ||
Строка 14: | Строка 14: | ||
==Classes== | ==Classes== | ||
- | |||
{| width="100%" class="annotated" cellpadding="2" cellspacing="1" border="0" | {| width="100%" class="annotated" cellpadding="2" cellspacing="1" border="0" | ||
|- valign="top" class="odd" | | |- valign="top" class="odd" | | ||
Строка 38: | Строка 37: | ||
|The drawing area for top-level windows in Qtopia Core on EGL/OpenGLES. It also provides the drawing area for QGLWidgets whether they are top-level windows or child widget of another QWidget | |The drawing area for top-level windows in Qtopia Core on EGL/OpenGLES. It also provides the drawing area for QGLWidgets whether they are top-level windows or child widget of another QWidget | ||
|} | |} | ||
- | + | <div id="details"></div> | |
==Подробное описание== | ==Подробное описание== | ||
OpenGL является стандартным API для отображения трехмерной графики. OpenGL имеет дело только с трехмерным рисованием и предоставляет очень слабую поддержку (или не предоставляет ее вовсе) для решения проблем GUI-программирования. Интерфейс пользователя для OpenGL-приложений должен быть создан с помощью других инструментов, таких как Motif в платформе X, Microsoft Foundation Classes (MFC) в Windows, или Qt на обоих платформах. | OpenGL является стандартным API для отображения трехмерной графики. OpenGL имеет дело только с трехмерным рисованием и предоставляет очень слабую поддержку (или не предоставляет ее вовсе) для решения проблем GUI-программирования. Интерфейс пользователя для OpenGL-приложений должен быть создан с помощью других инструментов, таких как Motif в платформе X, Microsoft Foundation Classes (MFC) в Windows, или Qt на обоих платформах. | ||
Строка 53: | Строка 52: | ||
'''Внимание:''' Модуль QtOpenGL входит в состав [[Qt:Документация 4.3.2/commercialeditions#qt-desktop-edition | Qt Desktop Edition]] и [[Qt:Документация 4.3.2/opensourceedition | Qt Open Source Edition]]. Он доступен в Windows, X11 и Mac OS X. [[Qt:Документация 4.3.2/qtopiacore | Qtopia Core]] поддерживает OpenGL ES (OpenGL for Embedded Systems). Для использования OpenGL API в [[Qt:Документация 4.3.2/qtopiacore | Qtopia Core]] нужна интеграция с Q Window System (QWS). Для получения подробностей смотрите [[Qt:Документация 4.3.2/qtopiacore-opengl | Qtopia Core и OpenGL]] | '''Внимание:''' Модуль QtOpenGL входит в состав [[Qt:Документация 4.3.2/commercialeditions#qt-desktop-edition | Qt Desktop Edition]] и [[Qt:Документация 4.3.2/opensourceedition | Qt Open Source Edition]]. Он доступен в Windows, X11 и Mac OS X. [[Qt:Документация 4.3.2/qtopiacore | Qtopia Core]] поддерживает OpenGL ES (OpenGL for Embedded Systems). Для использования OpenGL API в [[Qt:Документация 4.3.2/qtopiacore | Qtopia Core]] нужна интеграция с Q Window System (QWS). Для получения подробностей смотрите [[Qt:Документация 4.3.2/qtopiacore-opengl | Qtopia Core и OpenGL]] | ||
- | + | <div id="installation"></div> | |
===Установка=== | ===Установка=== | ||
+ | |||
При установке Qt в X11, скрипт конфигурирования пытается автоматически обнаружить, утановлены ли в системе заголовочные файлы и библиотеки OpenGL, и, если это так, он включает модуль Qt OpenGL в библиотеку Qt. (Если Ваши заголовочные файлы и библиотеки OpenGL размещены в необычной директории, то Вам может потребоваться изменение переменных <tt>QMAKE_INCDIR_OPENGL</tt> и/или <tt>QMAKE_LIBDIR_OPENGL</tt> в файле контфигурации для Вашей системы). | При установке Qt в X11, скрипт конфигурирования пытается автоматически обнаружить, утановлены ли в системе заголовочные файлы и библиотеки OpenGL, и, если это так, он включает модуль Qt OpenGL в библиотеку Qt. (Если Ваши заголовочные файлы и библиотеки OpenGL размещены в необычной директории, то Вам может потребоваться изменение переменных <tt>QMAKE_INCDIR_OPENGL</tt> и/или <tt>QMAKE_LIBDIR_OPENGL</tt> в файле контфигурации для Вашей системы). | ||
Строка 60: | Строка 60: | ||
Документация по QGL предполагает, что Вы знакомы с программированием OpenGL. Если оно Вам не знакомо, то хорошей отправной точкой станет ресурс [http://www.opengl.org/ http://www.opengl.org/]. | Документация по QGL предполагает, что Вы знакомы с программированием OpenGL. Если оно Вам не знакомо, то хорошей отправной точкой станет ресурс [http://www.opengl.org/ http://www.opengl.org/]. | ||
+ | <div id="how-to-use-x11-overlays-with-qt"></div> | ||
+ | ===Использование X11 оверлеев с Qt=== | ||
- | |||
Оверлеи X11 - это мощный механизм для рисования поверх рисунков без их разрушения, они сохраняют во время рисования большую часть изображения. За дополнительной информацией настоятельно рекомендуем Вам обратиться к книге ''OpenGL Programming for the X Window System'' (Mark Kilgard, Addison Wesley Developers Press 1996). | Оверлеи X11 - это мощный механизм для рисования поверх рисунков без их разрушения, они сохраняют во время рисования большую часть изображения. За дополнительной информацией настоятельно рекомендуем Вам обратиться к книге ''OpenGL Programming for the X Window System'' (Mark Kilgard, Addison Wesley Developers Press 1996). | ||
Строка 80: | Строка 81: | ||
X11 overlays are a powerful mechanism for drawing annotations etc., on top of an image without destroying it, thus saving a great deal of image rendering time. For more information, see the highly recommended book ''OpenGL Programming for the X Window System'' (Mark Kilgard, Addison Wesley Developers Press 1996). | X11 overlays are a powerful mechanism for drawing annotations etc., on top of an image without destroying it, thus saving a great deal of image rendering time. For more information, see the highly recommended book ''OpenGL Programming for the X Window System'' (Mark Kilgard, Addison Wesley Developers Press 1996). | ||
- | [Предыдущая: [[Qt:Документация 4.3.2/qtnetwork | Модуль QtNetwork]]] [ [[Qt:Документация 4.3.2/modules | Модули Qt]] ] [Следующая: [[Qt:Документация 4.3.2/qtsql | Модуль QtSql]]] | + | [Предыдущая: [[Qt:Документация 4.3.2/qtnetwork | Модуль QtNetwork]] ] [ [[Qt:Документация 4.3.2/modules | Модули Qt]] ] [Следующая: [[Qt:Документация 4.3.2/qtsql | Модуль QtSql]] ] |
- | + | ||
{{Qt4.3.2_footer}} | {{Qt4.3.2_footer}} |
Текущая версия на 10:53, 6 ноября 2008
![]() | Внимание: Актуальная версия перевода документации находится здесь |
__NOTOC__
Главная · Все классы · Основные классы · Классы по группам · Модули · Функции |
[Предыдущая: Модуль QtNetwork ] [ Модули Qt ] [Следующая: Модуль QtSql ]
Содержание |
[править] Модуль QtOpenGL
Модуль QtOpenGL предоставляет классы, которые могут облегчить использование OpenGL в приложениях Qt. Далее...
[править] Пространства имен
QGL | Различные идентификаторы используемые в модуле Qt OpenGL |
---|
[править] Classes
QGLColormap | Используется для установки собственных цветовых карт в QGLWidgets |
---|---|
QGLContext | Заключает в себе контекст рисования OpenGL |
QGLFormat | Формат отображения контекста рисования OpenGL |
QGLFramebufferObject | Encapsulates an OpenGL framebuffer object |
QGLPixelBuffer | Заключает в себе пиксельный буфер OpenGL |
QGLWidget | Виджет для отображения графики OpenGL |
QWSGLWindowSurface | The drawing area for top-level windows in Qtopia Core on EGL/OpenGLES. It also provides the drawing area for QGLWidgets whether they are top-level windows or child widget of another QWidget |
[править] Подробное описание
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 поддерживает OpenGL ES (OpenGL for Embedded Systems). Для использования OpenGL API в Qtopia Core нужна интеграция с Q Window System (QWS). Для получения подробностей смотрите Qtopia Core и OpenGL
[править] Установка
При установке 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. Следующие требования применяются в случаях, когда:
- Ваш X-сервер и графические карта/оборудование должны поддерживать оверлеи. Для многих X-серверов поддержка оверлеев может быть включена в настройках конфигурации; обратитесь к документации по установке Вашего X-сервера.
- Ваш X-сервер должен (может быть настроен) использовать оверлейную визуализация как средство визуализации по умолчанию. Большинство современных X-серверов это делают, так как это дает дополнительное преимущество при использовании выпадающих меню, перекрывающихся окон и т.д., которые не будут изменять нижележащее изображение основного плана, таким образом избегая дорогостоящих перерисовок.
- Лучшая (более глубокая) визуализация изображений OpenGL расположена в основном плане. Это нормальная ситуация. Обычно, X-сервер, поддерживающий оверлеи, предоставляет 24-битную TrueColor визуализация в основном плане, и 8-битную PseudoColor (по умолчанию) визуализацию в оверлейном плане.
Если все вышеперечисленные требования выполнены, QGLWidget по умолчанию будет использовать визуализацию в основном плане, в то время как все другие виджеты будут использовать оверлейную визуализацию. Таким образом, мы можем размещать обычные виджеты поверх QGLWidget, и выполнять рисование в них без воздействия на изображение в окне OpenGL. Другими словами, мы можем использовать все возможности рисования QPainter для отображения комментариев, линий и т.д. Для типичного использования оверлейных программ, это намного легче, чем применять OpenGL для рисования надписей.
Оверлейный план имеет специальный цвет, называемый прозрачным цветом. Пиксели нарисованные этим цветом не видны; вместо них будет показан нижележащий рисунок OpenGL.
Для применении этой техники, Вы не должны использовать для QApplication цветовые спецификации QApplication::ManyColor или QApplication::TrueColor, так как это вынудит обычные виджеты Qt использовать TrueColor-визуализацию, которая обычно должна быть в основном плане, а в оверлейном нежелательна.
X11 overlays are a powerful mechanism for drawing annotations etc., on top of an image without destroying it, thus saving a great deal of image rendering time. For more information, see the highly recommended book OpenGL Programming for the X Window System (Mark Kilgard, Addison Wesley Developers Press 1996).
[Предыдущая: Модуль QtNetwork ] [ Модули Qt ] [Следующая: Модуль QtSql ]
Copyright © 2007 Trolltech | Trademarks | Qt 4.3.2
|