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

Какие недостатки я могу использовать OpenGL для графического интерфейса в настольном приложении?

Существует множество графических интерфейсов для C/С++, но очень немногие из них основаны на идее, что opengl является довольно многоплатформенной графической библиотекой. Есть ли большой недостаток в использовании этого OpenGL для создания моего собственного минимального GUI в переносном приложении?

Blender делает это, и кажется, что он хорошо работает для него.

EDIT: точка моего вопроса заключается не в использовании внешней библиотеки, а в создании моей собственной. Моя главная проблема заключается в использовании библиотек, которые используют opengl в качестве backend. Agar, например, CEGUI или Blender GUI.

Спасибо.

4b9b3361

Ответ 1

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

В конкретном случае, о котором я думаю, мы хотели разрешить удаленные операции сдвига над VNC. Все работало отлично, за исключением одной программы (которая нам нужна только один раз в час, но мы действительно нуждались), которая использовала интерфейс OpenGL. Мы должны были задерживаться, пока не будет подготовлена ​​удаленная версия интерфейса OpenGL.

Ответ 2

Вы теряете возможности собственных платформ для доступности. Например, в Windows большинство элементов управления предоставляют информацию для чтения с экрана или других инструментов, поддерживающих пользователей с ограниченными возможностями доступа.

В принципе, если у вас нет реальной причины для этого, вы не должны.

Ответ 3

Re-invent the Wheel: Да, вы бы это сделали. Но я отмечаю, что OP употребляет слово "минимальное" в заявлении проблемы, поэтому, полагая, что это действительно не нужно масштабировать до всего этого, это может быть небольшое колесо, которое не имеет значения. Продукт, который я сейчас работаю, поддерживает OpenGL на трех платформах (Win, Mac, Linux), и мы создали все собственные виджеты (текстовые поля, кнопки, диалоги). Это большая работа, но теперь, когда мы это сделали, у нас есть огромный кусок нашего стека, и нам не нужно отлаживать сторонние структуры, когда все работает не так, как ожидалось. Приятно иметь полный контроль над опытом. Всегда есть что-то, что вы хотите сделать, чтобы фреймворк не поддерживал. Как и все в нашем бизнесе, это компромисс, и вам просто нужно взвесить ваши потребности против вашей потребности, чтобы закончить вовремя.

Переносимость: Да, вам все равно придется писать код конкретной платформы для загрузки всего. Это будет сложно, если вы этого не сделали раньше, так как вам нужно понять все целевые платформы.

Драйверы Windows: Мы обнаружили, что производители графических карт имеют гораздо лучшую поддержку DirectX в Windows, чем OpenGL, так как это требуется для получения сертификата MSFT. Часто карты с низким и средним диапазоном имеют ошибки, недостающие функциональные возможности или прямые сбои в поддержке OpenGL.

Ответ 4

С Qt 4.5 вы можете выбрать, хотите ли вы использовать OpenGL в качестве средства визуализации окон.

Дополнительная информация: http://blog.qt.digia.com/blog/2008/10/22/so-long-and-thanks-for-the-blit/

Прочитайте комментарии, чтобы узнать о проблемах с этим.

Ответ 5

Очевидным является то, что вы в основном создаете элементы GUI самостоятельно, вместо того, чтобы иметь красивый дизайн, как для wxWidgets или Qt.

Ответ 6

Вы не можете использовать opengl, вам нужен специальный код платформы, чтобы настроить окно для opengl. Из свободно доступной opengl red book:

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

Есть многоплатформенные решения для этого, такие как glut, qt, wxWidgets,...

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

Ответ 7

Если вы хотите использовать графический интерфейс, как в Windows/кнопку и т.д. Не делайте этого самостоятельно. Там много бесплатных решений для этого, wxwidgets, qt или GTK. У всех есть поддержка OpenGL, если вы хотите 3d-окно