Подтвердить что ты не робот

В чем различия между библиотеками OpenGL, GTK и QT?

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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

Так что сделай рендеринг своим чайником!

Ответ 4

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

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

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

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