Каковы различия между библиотеками OpenGL, GTK и QT? - PullRequest
23 голосов
/ 08 марта 2009

Я понимаю назначение GTK, QT или других графических инструментов. Но я не понимаю роль OpenGL. Это просто еще одна GUI-библиотека или это относится к чему-то более фундаментальному? Если так, что это и когда я должен использовать это в повседневном взломе?

Ответы [ 4 ]

29 голосов
/ 08 марта 2009

OpenGL - это библиотека для рисования графики на низком уровне. Это превосходит в основном в 3D-графике. Наиболее важным конкурентом OpenGL является Direct3D (, а не весь DirectX).

GL действительно мощный, только если он у вас аппаратно ускорен. Сегодня почти каждое решение для настольного компьютера или ноутбука имеет ускорение GL, но в некоторых системах, где видеокарта интегрирована в чипсет, оно все еще довольно медленное.

Для повседневного взлома GL может служить многим необычным целям. Причина в том, что вы можете использовать вычислительную мощность графического процессора для задач, связанных с графикой. Для чего-либо неграфического, более новые языки, такие как CUDA, существуют также для доступа к графическому процессору.

Несмотря на то, что настоящие сильные стороны GL заключаются в рендеринге 3D-сцены, его часто также используют для 2D-манипуляции или композиции. Причина в том, что 2D-архитектуры ускорения видеокарт часто не достигают мощности (свободы) или производительности GL. Вот почему иногда GL используется для вывода видео (в основном, масштабирования) или задач смешивания, даже если для этих задач было бы доступно специальное 2D-ускорение. Mac OS X является ярким примером того, как весь рабочий стол (опционально) визуализируется через GL, чтобы обеспечить привлекательные эффекты без высокой загрузки процессора. Но его также можно использовать, например, для смешивания сглаженных глифов текста на текстурированном фоне.

Как только вы выполните графическое, критически важное для производительности задание, вы, вероятно, захотите, чтобы графический процессор выручил (возможно, даже если вы не рисуете на экране), и тогда OpenGL - это чистый, стандартизированный, кроссплатформенный ответ твои нужды. Сегодняшние наборы инструментов с графическим интерфейсом в основном предлагают не графическое ускорение, а включение визуализации GL в их виджеты. Таким образом, вы можете использовать их для рисования пользовательского интерфейса и включать вашу графику реального времени, критичную для производительности, где это подходит. Создание целого пользовательского интерфейса внутри GL - это боль, но есть и решения для этого (типичные сценарии использования - игры с игровым интерфейсом).

16 голосов
/ 08 марта 2009

Это нечто более фундаментальное. OpenGL позволяет выполнять низкоуровневое рисование (подумайте «нарисуйте линию отсюда сюда», а не «нарисуйте кнопку»). Операции OpenGL также часто аппаратно ускоряются и, следовательно, очень эффективны, а API OpenGL позволяет легко работать с 3D.

Выбор между OpenGL и инструментарием GUI, таким как QT или GTK, действительно зависит от того, пытаетесь ли вы нарисовать элементы пользовательского интерфейса для своего приложения или хотите очень хорошо контролировать, как отрисовывается ваша графика.

Иногда наборы инструментов GUI используют OpenGL под крышками для рисования своих элементов на экране.

8 голосов
/ 08 марта 2009

OpenGL - это графический API, на котором построены более сложные графические библиотеки, ориентированные на пользователя. Если вы заинтересованы в разработке графики и, в частности, в трехмерной графике, то вам стоит познакомиться с ней. Это чрезвычайно мощная система, которая может делать все, от рисования линий до рендеринга Quake, до обработки реалистичного атмосферного рендеринга.

Отправной точкой для всего, что связано с OpenGL, является OpenGL.org , в котором есть ссылки на все, что вам нужно.

Если вы предпочитаете учебник, и это не плохая идея с OpenGL, тогда окончательный текст - «Руководство по программированию OpenGL», в просторечии известное как «Красная книга» из-за его обложки. Вы можете дополнить это «языком затенения OpenGL» (или «Оранжевой книгой»), который делает то, что говорит.

Одна из приятных особенностей OpenGL заключается в том, что существует простой набор инструментов для тестирования - GLUT, который реализован на большинстве языков с привязками и который чрезвычайно прост в настройке для экспериментов и, как правило, работает с ним.

Итак, возьмите рендеринг своего чайника!

5 голосов
/ 08 марта 2009

GTK, QT, MFC, wxwidget и т. Д. Являются оконными инструментами - они предоставляют элементы управления, такие как диалоговые окна, виджеты, кнопки и т. Д. Для создания приложений графического интерфейса.

Одним из элементов управления, которые они обычно предоставляют, является холст, на котором можно рисовать с помощью графических команд (рисование линий, рисование окружности и т. Д.). Возможно, они также предоставляют холст OpenGL, который можно рисовать с помощью команд OpenGL.

OpenGL (в простых терминах) - это язык для отображения 3D-объектов, он очень мощный, кроссплатформенный и несколько сложный (особенно если у вас слабая математика!), Но это гораздо лучше, чем пытаться делать какие-либо из этих 3D-вещей сам! Иногда это может расстраивать, особенно если вы делаете что-то не так, и просто рисует пустой экран.

Просто, чтобы сделать вещи немного сложнее, есть также наборы оконных инструментов, написанные на OpenGL, где OpenGL предоставляет набор кнопок, диалогов и т. Д. В сцене И бывают случаи, когда (за кулисами) все элементы GUI используются чем-то вроде QT фактически отрисовывается OpenGL!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...