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