Интернет магазин китайских планшетных компьютеров



Компьютеры - OpenGL - Независимость от языка программирования

10 июня 2011


Оглавление:
1. OpenGL
2. Архитектура
3. Расширения
4. Дополнительные библиотеки
5. Независимость от языка программирования



Для подтверждения независимости от языка программирования были разработаны различные варианты привязки функций OpenGL или полностью перенесены на другие языки. Одним из примеров может служить библиотека Java 3D, которая может использовать аппаратное ускорение OpenGL. Прямая привязка функций реализована в Lightweight Java Game Library, которая имеет прямую привязку OpenGL для Java. Sun также выпустила версию Java OpenGL, которая предоставляет прямую привязку к Си-функциям OpenGL, в отличие от Java 3D, которая не имеет столь низкоуровневой поддержки. Официальный сайт OpenGL имеет ссылки на привязки для языков Java, Фортран 90, Perl, Pike, Python, Ada, Visual Basic и Pascal. Имеются также варианты привязки OpenGL для языков C++ и C#.

История

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

Распространению компьютерной графики сопутствовали свои трудности. В 1990-х разработка программного продукта, способного работать на большом количестве графического оборудования, была сопряжена с большими временными и финансовыми затратами. Было необходимо отдельно создавать модули для каждого типа графических адаптеров, что порой приводило к размножению одинакового программного кода. Это сильно тормозило развитие и распространение компьютерной графики.

Silicon Graphics Incorporated специализировалась на создании высокотехнологического графического оборудования и программных средств. Являясь в то время лидером в трёхмерной графике, SGI видела проблемы и барьеры в росте рынка. Поэтому было принято решение стандартизировать метод доступа к графической аппаратуре на уровне программного интерфейса.

Таким образом появился программный интерфейс OpenGL, который стандартизирует доступ к графической аппаратуре путём смещения ответственности за создание аппаратного драйвера на производителя графического устройства. Это позволило разработчикам программного обеспечения использовать более высокий уровень абстракции от графического оборудования, что значительно ускорило создание новых программных продуктов и снизило на них затраты.

В 1992 году компания SGI возглавила OpenGL ARB — группу компаний по разработке спецификации OpenGL. OpenGL эволюционировал из 3D-интерфейса SGI — IRIS GL. Одним из ограничений IRIS GL было то, что он позволял использовать только возможности, поддерживаемые оборудованием; если возможность не была реализована аппаратно, приложение не могло её использовать. OpenGL преодолевает эту проблему за счёт программной реализации возможностей, не предоставляемых аппаратно, что позволяет приложениям использовать этот интерфейс на относительно маломощных системах.

В 1995 году была выпущена библиотека Direct3D от Microsoft. Вскоре Microsoft, SGI и Hewlett-Packard начали проект под названием Fahrenheit, который предусматривал создание более универсального программного интерфейса на основе Direct3D и OpenGL. Идея казалась достаточно обещающей, призванной навести порядок в области интерактивной трёхмерной графики, однако, в результате финансовых трудностей в SGI и отсутствия должной индустриальной поддержки, проект был закрыт.

OpenGL 2.0

В сентябре 2001 года 3DLabs раскрыла свое видение OpenGL 2.0. Говорили, что по сравнению с DirectX главной проблемой OpenGL является Консорциум, в который входит большое количество компаний с различными интересами, что приводит к длительному периоду принятия новой версии спецификации. OpenGL версии 2.0 была представлена 3Dlabs в ответ на беспокойство относительно медленного и нечёткого направления развития OpenGL. 3Dlabs предложила ряд существенных дополнений к стандарту, наиболее значимым из которого было добавление к ядру OpenGL шейдерного языка GLSL. Это позволяет программисту заменить фиксированный конвейер OpenGL небольшими программами на специальном языке для создания различных эффектов, таких, как bump mapping, normal mapping, parallax mapping, HDR и т. д.

Однако, ещё до введения в стандарт OpenGL языка GLSL существовала возможность разрабатывать спецэффекты на языках ассемблера и Cg. Многие предложенные возможности пока отсутствуют в версии OpenGL 2.0, хотя некоторые из них реализованы многими производителями в виде расширений.

OpenGL 3.0

11 августа 2008 года Khronos Group представила новую версию спецификации OpenGL.

Поддерживают видеокарты: Radeon HD серии; GeForce 8, 9, GTX 100, GTX 200, GTX 300 и GTX 400 серий.

OpenGL 3.1

24 марта 2009 года Khronos Group анонсировала OpenGL 3.1. В новой версии произведена чистка компонентов, которые были объявлены устаревшими, но оставались в OpenGL 3.0 для сглаживания перехода на новую версию API.

Кроме того, в OpenGL 3.1 добавлен ряд новшеств, таких как:

  • Поддержка OpenGL Shading Language версии 1.40.
  • CopyBuffer API для быстрого копирования данных; используется в сочетании OpenCL.
  • Текстурные буферные объекты.
  • Uniform Buffer Objects.
  • Signed нормализованные текстуры.
  • Доступно минимум 16 текстурных единиц в vertex shader.
  • Primitive restart.
  • Instancing.

Для использования только OpenGL 3.1, нужно использовать gl3.h.

OpenGL 3.2

3 августа 2009 года Khronos Group анонсировала OpenGL 3.2. Новая версия продолжает развитие стандарта OpenGL, чтобы дать разработчикам графики кроссплатформенный доступ к передовой функциональности GPU.

Поддерживают видеокарты: Radeon серии HD; GeForce 8000, 9000, GTX серий 200 и 400.

Нововведения:

  • Поддержка OpenGL Shading Language версии 1.50.
  • Порядок вершинных компонентов BGRA — теперь в шейдере можно читать 4-компонентные вершинные атрибуты в формате RGBA.
  • Команды отрисовки теперь позволяют модификацию базового индекса вершины — теперь легко можно использовать один набор вершинных буферов для хранения множества мешей.
  • Настройка координатного соглашения фрагментных шейдеров — для облегчения написания мультирендеров.
  • Настройка «побуждающей» вершины — для тех же целей.
  • Бесшовное фильтрование кубических карт.
  • Текстуры с мультивыборкой и текстурные семплеры для заданных областей выборки.
  • Управление отсечением фрагментов по глубине — для теней и прочего.
  • Геометрические шейдеры.
  • Fence sync objects — контроль загрузки в буферы.

OpenGL 3.3

Представлена вместе с OpenGL 4.0 11 марта 2010 года. Позволяет максимально возможно приблизиться к функциональности OpenGL 4.0 на аппаратной базе предыдущего поколения.

OpenGL 4.0

11 марта 2010 года Khronos Group представила финальный вариант спецификации OpenGL 4.0 и языка описания шейдеров GLSL 4.0. OpenGL 4.0 полностью обратно совместим со старыми расширениями OpenGL, используя режим совместимости введеный в OpenGL 3.2.

Нововведения:

  • Две новые ступени обработки шейдеров, что позволяет перенести обработку тесселяции с центрального процессора на GPU;
  • Поддержка выборочных фрагментных шейдеров и программируемых фрагментных шейдеров входных позиций для увеличения качества рендеринга и гибкости в управлении сглаживанием;
  • Прорисовка данных, сгенерированных OpenGL или такими внешними API, как OpenCL, без участия центрального процессора;
  • Шейдерные подпрограммы помогут значительно увеличить гибкость написания программ;
  • Разделение состояния текстур и текстурных данных через добавление нового типа данных под названием «объекты семплов»;
  • 64-битная двойная точность с плавающей запятой операций с шейдерами и ввода-вывода для увеличения точности и качества рендеринга;
  • Увеличение производительности, включая шейдеры геометрии образца, массивов образца и новых запросов к таймеру.

OpenGL 4.1

26 июля 2010 года, Khronos Group анонсировала спецификацию OpenGL 4.1. Спецификация включает в себя обновление GLSL до версии 4.10.

Нововведения:

  • Полная совместимость с OpenGL ES 2.0 API
  • Возможность опрашивать и загружать бинарные данные для объектов шейдерных программ
  • 64-х битные компоненты с плавающей точкой для вершинных шейдеров
  • Использование различных точек обзора

Новые расширения:

  • Sync-объекты OpenGL, связанные с event-объектами OpenCL
  • Возможность установить шаблонные значения во фрагментном шейдере
  • Некоторые особенности для улучшения надежности, например при запуске WebGL приложений
  • Механизмы обратной связи для получения ошибок и предупреждений

OpenGL 4.2

8 августа 2011 года Khronos Group опубликовала спецификацию OpenGL 4.2 и языка шейдеров GLSL 4.2.
Нововведения:

  • Возможность использования в шейдерах атомарных счетчиков и атомарных операций модификации для одного уровня текстур
  • Возможность геометрических преобразований с использованием тесселяции на стороне GPU и отрисовки нескольких экземпляров полученных преобразований
  • Поддержка изменения произвольной части сжатой текстуры, без повторной загрузки в GPU текстуры целиком
  • Поддержка упаковки нескольких 8- и 16-разрядных значений в одно 32-разрядное значение для эффективной обработки шейдеров cо значительным сокращением используемого объема памяти и повышением пропускной способности.


Просмотров: 4424


<<< Yepp
DevIL >>>