Как известно, OpenGL расшифровывается как Open Graphics Library, что в переводе на русский язык означает «открытая графическая библиотека».
Другими словами, OpenGL — это некая спецификация, включающая в себя несколько сотен функций. Она определяет независимый от языка программирования кросс-платформенный программный интерфейс, с помощью которого программист может создавать приложения, использующие двухмерную и трехмерную компьютерную графику. Первая базовая версия OpenGL появилась в 1992 году – она была разработана компанией Silicon Graphics Inc., занимающейся разработками в области трехмерной компьютерной графики.
За следующие 17 лет версия библиотеки достигла отметки 3.1. Но нельзя сказать, что библиотека видоизменялась, нет. Ее создатели заложили в нее механизм расширений, благодаря которому производители аппаратного обеспечения (к примеру, производители видеокарт) могли выпускать расширения OpenGL для поддержки новых специфических возможностей, не включенных в текущую версию библиотеки. Благодаря этому, программисты могли сразу использовать эти новые возможности, в то время как в случае использования библиотеки Microsoft Direct3D им бы пришлось ждать выхода новой версии DirectX.
В современном мире, библиотеки OpenGL и DirectX являются конкурентами на платформе MS Windows.
Microsoft всеми силами продвигает свою библиотеку DirectX, а также всеми силами стремится замедлить развитие библиотеки OpenGL, что ослабило бы графическую систему конкурирующих ОС, где для реализации вывода всей графики используется исключительно библиотека OpenGL.
Мы будем учиться визуализации компьютерной графики именно с применением этой библиотеки. Но, к сожалению, прямой поддержки данной библиотеки в .NET Framework нет, опять же по причинам конкуренции. Поэтому мы будем использовать библиотеку Tao Framework, о которой поговорим в следующей части главы.
11 марта 2010 года Khronos Group на GDC объявила о выпуске спецификации OpenGL 4.0:
Рисунок 1. OpenGL 4.0
Спецификация OpenGL 4.0 была разработана рабочей группой OpenGL ARB (Architecture Review Board) в Кроносе (Khronos), и включает в себя обновлённый язык GLSL 4.00 OpenGL Shading, что позволяет разработчикам получить доступ к последним поколениям ускорителей GPU со значительно улучшенным качеством графики, производительности и увеличенной скорости гибкого программирования. Эта новая версия продолжает стремительное развитие свободного стандарта OpenGL, для того чтобы графические разработчики имели доступ ко всей функциональности современных GPU для использования в самых разнообразных операционных системах и платформах. Полная спецификация доступна для скачивания на http://www.opengl.org/registry.
OpenGL 4.0 улучшает тесные взаимодействия с OpenCL™ для ускорения вычислительных ресурсов графических приложений. OpenGL 4.0 также продолжает оказывать поддержку совместимости с OpenGL 3.2, что позволяет разработчикам использовать упрощенный API или сохранить обратную совместимость для существующего кода OpenGL в зависимости от потребностей рынка.
OpenGL 4.0 был специально разработан, чтобы принести значительные выгоды для разработчиков приложений, в том числе:
- 2 новых уровня шейдеров, которые обрабатываются в GPU для разгрузки CPU при выполнении тессиляции;
- поддержка выборочных фрагментных шейдеров и программируемых фрагментных шейдеров для увеличения качества рендеринга и гибкости при реализации сглаживания;
- отрисовка данных, полученных в OpenGL или через внешние интерфейсы, таких как OpenCL, без вмешательства центрального процессора;
- шейдерные подпрограммы для значительного увеличения гибкости программирования;
- разделение состояния текстур и текстурных данных за счет добавления нового типа объекта данных – «объекты семплов»;
- 64-битная двойная точность шейдерных операций с плавающей точкой и входов / выходов для увеличения точности и качества рендеринга;
- улучшена производительность, в том числе экземпляров геометрических шейдеров, экземпляров массивов, а также новым подходом запросов к таймеру.
Khronos одновременно с этим выпустила спецификацию OpenGL 3.3, а также набор расширений ARB, чтобы большинство функциональных возможностей OpenGL 4.0 работало на предыдущих поколениях аппаратных GPU.
Все это дает максимальную гибкость и охват платформ для разработчиков приложений. Полная спецификация OpenGL 3.3 также доступна для скачивания на http://www.opengl.org/registry
26 июля 2010 года Khronos Group анонсировала спецификацию OpenGL 4.1. Спецификация включает в себя обновление GLSL (GL Shading language) до версии 4.10 и несет в себе как нововведения (такие как обеспечение полной совместимости с OpenGL ES 2.0 API, улучшения взаимодействия с OpenGL, улучшения при работе в WebGL приложениями и другие).
В англоязычной части интернета уже появились новые уроки и демонстрационные программы по использованию OpenGl 3.2 и OpenGL 4.
В скором времени вы сможете прочитать пару слов о спецификации OpenGL 4.1.
- Anvi
Khronos что это за программа
Всего сообщений: 12
Выпуск спецификации OpenGL 4.6
Консорциум Khronos, занимающийся разработкой графических стандартов, отметил двадцатипятилетие с момента основания стандарта OpenGL публикацией новой версии спецификации OpenGL 4.6, которая стала первым обновлением с момента появления графического API Vulkan, пришедшего на смену OpenGL.
Для оценки возможностей новой версии API на реальном оборудовании компания NVIDIA выпустила бета-версию (381.26.11) драйвера с поддержкой OpenGL 4.6. Сообщается, что любые GPU NVIDIA для которых уже имеется поддержка OpenGL 4.5 являются совместимыми и с OpenGL 4.6.
Из открытых драйверов к поддержке новой спецификации наиболее близки драйверы Intel i965, Nouveau (nvc0) и RadeonSI, в которых реализовано 5 из 11 новых расширений OpenGL 4.6.
Наиболее интересным новшеством OpenGL 4.6 является возможность обработки переносимого промежуточного представления шейдеров SPIR-V, изначально разработанного для API Vulkan. SPIR-V универсален для всех платформ и может применяться как для графики, так и для параллельных вычислений.
SPIR-V подразумевает выделение отдельной фазы компиляции шейдеров в промежуточное представление, что позволяет создавать фронтэнды для различных высокоуровневых языков.
На основе различных высокоуровневых реализаций отдельно генерируется единый промежуточный код, который может использоваться драйверами OpenGL, Vulkan и OpenCL без применения встроенного компилятора шейдеров.
Избавление драйвера от компилятора шейдеров существенно упрощает драйвер, ускоряет загрузку кода для GPU и делает драйвер независимым от высокоуровневых языков разработки программ для GPU. Для преобразования шейдеров на языке GLSL в представление SPIR-V развивается компилятор glslang, в который уже добавлена поддержка GLSL 4.60.
- В основной состав спецификации OpenGL 4.6 включено 11 расширений:
- GL_ARB_gl_spirv и GL_ARB_spirv_extensions для стандартизации поддержки SPIR-V в OpenGL;
- GL_ARB_indirect_parameters и GL_ARB_shader_draw_parameters для снижения нагрузки на CPU при выполнении операций в пакетном режиме, связанных с рендерингом большого числа геометрических примитивов;
- GL_ARB_pipeline_statistics_query и GL_ARB_transform_feedback_overflow_query для стандартизации в OpenGL ранее специфичных для Direct3D средств для получения статистики о ходе выполнения шейдеров и отлавливания переполнения буферов;
- GL_ARB_texture_filter_anisotropic (бывшее расширение GL_EXT_texture_filter_anisotropic) с реализацией метода улучшения визуального качества текстур, на который ранее распространялись патентные ограничения;
- GL_ARB_polygon_offset_clamp (бывшее расширение GL_EXT_polygon_offset_clamp) для устранения часто встречающегося визуального артефакта «утечка света» (light leak), возникающего при отрисовке теней;
- GL_ARB_shader_atomic_counter_ops и GL_ARB_shader_group_vote с реализацией дополнительных функций шейдеров, расширяющих функциональность и производительность решений для рабочего стола (реализация атомарных счётчиков и функции для ускорения композитинга на процессорах SIMD);
- GL_KHR_no_error, позволяет снизить нагрузку на драйвер при выполнении операций, которые заведомо не могут привести к ошибке. При помощи данного расширения приложение может отключить код проверки ошибок в драйвере, что положительно сказывается на производительности;
- Добавлено три новшества, которые в дальнейшем будут оформлены как расширения OpenGL:
- GL_KHR_parallel_shader_compile — позволяет приложениям запустить сразу несколько потоков компиляции шейдеров;
- WGL_ARB_create_context_no_error и GXL_ARB_create_context_no_error для отключения контекста обработки ошибок в WGL или GLX.
- Для улучшения переносимости с API Vulkan и Direct3D в спецификации OpenGL и OpenGL ES включена порция необязательных расширений для низкоуровневых манипуляций с объектами в памяти и управления синхронизацией выполнения операций с GPU:
GL_EXT_memory_object* и GL_EXT_semaphore*. Указанные расширения позволяют импортировать в OpenGL-приложения объекты Vulkan для их привязки к текстурам или буферам в памяти. Для совместимости с Direct3D добавлено расширение GL_EXT_win32_keyed_mutex.
VulkanRT что за программа, для чего нужна?
Здравствуйте. Нередко компьютерные пользователи обнаруживают на своем ПК новые файлы и папки, которые вызывают подозрение и желание удалить неизвестный объект. Сегодня расскажу об одном из таких элементов — VulkanRT что за программа, для чего нужна, можно ли её устранить.
Странная находка
Не так давно я от нечего делать решил покопаться в файловой системе Windows 10 в надежде найти что-то новое. Мне на глаза попалась папка VulkanRT, внутри которой располагался вложенный каталог с названием 1.0.3.
9. Я сразу понял, что эти цифры указывают на версию программного обеспечения. Открыв директорию, увидел несколько файлов, среди которых был деинсталлятор UninstallVulkanRT (предназначенный для удаления приложения).
Моя первая мысль была связана с назойливой рекламой «Вулкан – ставки на спорт», которая присутствует везде в интернете. Не уж то я подцепил вирус Adware? Но, прежде чем снести всё это дело в «Корзину», решил поискать ответы в сети.
С чем мы имеем дело?
Как оказалось, за несколько дней до этой находки в панели GeForce Experience у меня появилось уведомление о том, что для моего видеоадаптера доступны обновления.
Поскольку я доверяю этому софту, то без каких-либо сомнений скачал апдейт, запустил автоматическую оптимизацию игр.
И уже потом узнал на одном тематическом форуме, что именно утилита от nVidia загрузила на ПК недостающие библиотеки, необходимые для некоторых «игрулек». Вопрос: «VulkanRT что это за программа и нужна ли она?» сразу же снялся с повестки дня.
https://www.youtube.com/watch?v=Pqdq2SvNZP4\u0026pp=ugMICgJydRABGAE%3D
Если хотите скачать данные драйвера вручную, советую это делать исключительно на официальном сайте, по ссылке — https://developer.nvidia.com/vulkan-driver. На открывшейся странице следует выбрать Вашу версию операционной системы и разрядность (узнать, какая у Вас — 32 или 64 бит):
Многие эксперты с уверенностью заявляют, что этот инструмент будет оставаться незаменимым для истинных геймеров в ближайшие несколько лет. Быть может потом появиться что-то новое, или же разработчики просто будут развивать дальше Вулкан РТ.
Из всего вышесказанного можно сделать очевидный вывод – удалять VulkanRT не стоит ни в коем случае, если хотите, чтобы графика в играх была более привлекательная без повышения потребления системных ресурсов. Вдруг, всё же, захотите устранить этот объект, делать это нужно правильно:
- Заходите в папку с номером версии, расположенной по пути:
- Запускаете файл UninstallVulkanRT и следуете простейшим инструкциям «мастера».
- Предлагаю посмотреть следующие видеоролики для оценки возможностей и преимуществ описанной в статье технологии.
© Solvusoft Corporation 2011-2020. All Rights Reserved.
Этот сайт использует куки-файлы. Продолжая просмотр, вы соглашаетесь с использованием нами куки-файлов в порядке, описанном в нашей Политике конфиденциальности. Я согласен(на)
About The Khronos Group
The Khronos Group is an open industry consortium of over 150 leading hardware and software companies creating advanced, royalty-free, acceleration standards for 3D graphics, Augmented and Virtual Reality, vision and machine learning.
Khronos standards include Vulkan®, OpenGL®, OpenGL® ES, OpenGL® SC, WebGL™, SPIR-V™, OpenCL™, SYCL™, OpenVX™, NNEF™, COLLADA™, OpenXR™, 3D Commerce™ and glTF™.
Khronos members are enabled to contribute to the development of Khronos specifications, are empowered to vote at various stages before public deployment and are able to accelerate the delivery of their cutting-edge accelerated platforms and applications through early access to specification drafts and conformance tests.
Khronos Visual Computing Ecosystem
To get involved, please visit our Membership page.
Khronos Organizational Chart
IP Zones are an organizational mechanism layered over the IP framework. The Khronos Board identifies which working groups are routinely sharing design contributions and organize them into IP Zones in order to clearly manage a web of Working Group Exclusion Certificates. An ‘IP Zone’ is simply an agreed set of working groups that are sharing design contributions. Learn more about Khronos’ IP Framework in Attachment A of the Khronos membership agreement.
To learn more, visit the Directors or Working Group Chairs page.
Khronos Adopter Program
Application developers may always freely use Khronos Standards when they are available on the target system. To enable companies to test their products for conformance, Khronos has established an Adopters Program for each standard.
This helps to ensure that Khronos standards are consistently implemented by multiple vendors to create a reliable platform for developers.
Conformant products also enjoy protection from the Khronos IP Framework, ensuring that Khronos members will not assert their IP essential to the specification against the implementation.
- To learn more, visit the Adopter page.
- 9450 SW Gemini Drive #45043 Beaverton, OR 97008-6018 USA
- Office: +1 (415) 869-8627
Khronos объявил о стандартизации OpenGL 4.4 и предварительных спецификациях OpenCL 2.0
На выставке SIGGRAPH 2013, предназначенной для специалистов в области компьютерной графики, уже показали множество аппаратного обеспечения: и Tegra 5, и Exynos 5420, и NVIDIA Quadro K6000.
Но нам ведь железок недостаточно, нужно же ещё программное обеспечение, коим можно будет нагружать вычислительные возможности графики нового поколения? Тут на выручку приходит фонд Khronos Group, который заявил о стандартизации OpenGL 4.
4 и выпуске предварительной спецификации языка OpenCL 2.0.
OpenGL, кроссплатформенный набор API для создания 2D и 3D-графики, в обновлении этого года получил не только пополнение функциональности, но и набор тестов для обязательной сертификации, которое будет проходить оборудование, начиная с OpenGL 4.4 и далее.
Это позволит разработчикам приложений и игр тратить меньше усилий на перенос своего кода между платформами. OpenGL 4.4 раскрывает новые возможности для создания реалистичной компьютерной графики при сохранении обратной совместимости с предыдущими версиями.
Среди ключевых нововведений Khronos Group отмечает:
- Управление положением буфера значительно улучшает гибкость и эффективность памяти путём тонкого управления расположением буферов в графической и системной памяти, а также позволяет контролировать поведение кэша. Кроме того, центральный процессор может явно указывать GPU использовать конкретный буфер.
- Эффективные асинхронные запросы. Объекты буфера доступны для прямых запросов, позволяя избежать увеличения потребления процессорного времени и увеличения задержек в GPU. Это значительно увеличивает производительность приложений, которые используют последовательные результаты запросов видеоускорителя, которые могут использоваться для динамического определения качества на основе показателей производительности.
- Изменяемая шейдерная разметка даёт точный контроль над размещением шейдерных переменных, включая возможность эффективно упаковывать векторы с помощью скалярной типизации. Кроме того данное нововведение включает в себя полный контроль над изменяемой разметкой внутри однородных блоков и активирует шейдеры для распределения переменных выходных данных в вершинных буферах для дальнейшего использования и для разметки буфера.
- Эффективное связывание множественных объектов предоставляет набор команд, которые позволяют приложению связывать или разрывать наборы объектов с помощью единственного вызова программного интерфейса, вместо написания отдельных команд для каждой конкретной операции, амортизируя вызов функции, выборку по пространству переменных и возможные издержки блокировки. Данные техники позволяют значительно сократить потребление ресурсов процессора на выполнение команд и увеличить общую производительность.
Кроме того добавлены наборы функций для работы с текстурами, похожие на методы, используемые в Direct3D. Эти функции внедрены для упрощения портирования с/на Windows-платформы. Кроме новых возможностей, в OpenGL 4.
4 добавлены расширения к существующим: расширения несвязанных и разреженных текстур.
В первом случае разработчики могут программировать шейдеры на доступ к практически неограниченному числу текстур, а во втором — позволяет работать с текстурами, которые превышают объем видеопамяти видеокарты путём указания на участки, которые поддерживают алгоритмы “мегатекстур”.
OpenGL позволяет разработчикам создавать насыщенную графику
Компании NVIDIA и AMD заявили, что рады продолжающемуся развитию OpenGL и готовы обеспечить всю необходимую поддержку нового стандарта, как на уровне оборудования, так и на уровне драйверов. Учитывая, что новая спецификация обратно совместима с предыдущими, то NVIDIA уже выпустила бета-версии драйверов для видеокарт серий 400, 500, 600, 700 и Quadro на архитектуре Fermi или выше.
Новости про Khronos Group и OpenCL
- Khronos Group
- OpenCL
- API
- OpenGL
- программирование
МИР NVIDIAНовостиKhronos Group
В пресс-релизе анонса финальных спецификаций OpenCL 2.2 и SPIR-V 1.2, Khronos Group намекнула о возможной интеграции APIOpenCL и Vulkan в будущем.
В оригинальном пресс-релизе лишь говорится о работе «консорциума над стремлением и развитием Khronos Vulkan API в объединении современной графики и вычислений в единый API».
Скотт Михауд из PC Perspective пояснил, что рабочая группа OpenCL приняла решение по согласованию своей дорожной карты с Vulkan, что станет основой для дальнейшего объединения этих API.
Несмотря на то, что и OpenCL и Vulkan работают на одном поле, первый API поддерживает более широкий спектр устройств, поддерживает бесплатный SYCL и кросс-платформенный абстрактный слой, который позволяет писать гетерогенный код по стандартам C++. В то же время Vulkan является маркетинговой звездой и обладает прекрасной поддержкой со стороны разработчиков.
Объединение OpenCL и Vulkan под эгидой Khronos станет прекрасным решением, которое позволит облегчить разработку приложений, распространить API на большее количество устройств и создать серьёзную конкуренцию DirectX 12.
комментировать похожие новости
Khronos Group представила обновленный вариант графического API (Application Programming Interface) OpenGL 2D и 3D , который при сохранении обратной совместимости обеспечивает дополнительные функциональные возможности, а также поддержку OpenGL ES 2.0 API.
Полный список дополнений в OpenGL 4.1 включает в себя:
- полная совместимость с OpenGL ES 2.0 API для удобства переноса между настольными и мобильными платформами;
- возможность запроса и загрузки бинарных объектов шейдерных программ для сохранения повторной компиляции;
- cпособность связывать отдельные программы для программируемых этапов гибкого программирования;
- 64-битная точность для числ с плавающей точкой в компонентах вершинных шейдеров и материалах для высокой геометрической точности;
- несколько возможностей создания поверхностей для увеличения гибкости рендеринга;
- новые ARB расширения;
- синхронизация OpenGL-объектов с OpenCL-объектами для улучшения совместимости с OpenCL;
- возможность установить шаблон значений фрагмента шейдеров для повышения гибкости рендеринга;
- повышение надежности при запуске приложений WebGL;
- новые механизмы получения расширенных ошибок и предупреждений.
Спецификации OpenGL 4.1 опубликованы и могут быть найдены на официальном сайте.
комментировать похожие новости
Один из лидеров в мире Open Source программирования, Khronos Group сегодня опубликовал спецификации OpenCL 1.1 — первое крупное обновление OpenCL, распространяемое бесплатно.
Версия OpenCL 1.1 добавляет значительные функциональные возможности для расширения возможностей параллельного программирования и привносит в создаваемые приложения больше гибкости, функциональности и производительности, в том числе засчет:
- новые типы данных, в том числе 3-х компонентные вектора и дополнительные графические форматы;
- обработка команд из нескольких хостов и использование буфера между несколькими устройствами;
- операции по отдельным частям буфера в том числе чтение, запись и копирование 1D, 2D или 3D прямоугольных областей;
- расширенное использование событий и систем управления командами;
- дополнительные OpenCL C встроенные функции, такие как: integer clamp, shuffle и asynchronous strided copies;
- улучшенная совместимость с OpenGL на основе эффективного обмена изображениями и буферами для связи OpenCL и OpenGL событий.
Напомню, в рабочую группу OpenCL входят такие известные компании, как: AMD, Apple, Blizzard Activision, Electronic Arts, Ericsson, IBM, Intel, Nokia, S3 Graphics, Sony, STMicroelectronics, Symbian, Texas Instruments и, конечно же, NVIDIA.
комментировать похожие новости
Не попавшие на Game Developers Conference в этом году могут посмотреть материалы в электронном виде.
Презентации Khronos Group можно загрузить с сайта группы по ссылкам ниже:
- Mobile API Overview (PDF, ~7,5 Мб)
- OpenCL debugging (PDF, ~0,8 Мб)
- OpenCL overview (PDF, ~1,8 Мб)
- Портирование кода на OpenCL (PDF, ~1,4 Мб)
- OpenGL 4 и WebGL (PDF, ~3 Мб)
- WebGL (PDF, ~0,5 Мб)
- COLLADA overview (PDF, ~1,3 Мб)
- COLLADA в SpiderGL (PDF, ~0,3 Мб)
- COLLADA в WebGL (PDF, ~0,3 Мб)
Напомним, что NVIDIA также опубликовала презентации с GDC 2010.
комментировать похожие новости
OpenGL | это… Что такое OpenGL?
OpenGL (Open Graphics Library — открытая графическая библиотека, графическое API) — спецификация, определяющая независимый от языка программирования платформонезависимый программный интерфейс для написания приложений, использующих двухмерную и трёхмерную компьютерную графику.
Включает более 250 функций для рисования сложных трёхмерных сцен из простых примитивов. Используется при создании компьютерных игр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурирует с Direct3D.
Спецификация
На базовом уровне, OpenGL — это просто спецификация, то есть документ, описывающий набор функций и их точное поведение.
Производители оборудования на основе этой спецификации создают реализации — библиотеки функций, соответствующих набору функций спецификации. Реализация использует возможности оборудования там, где это возможно.
Если аппаратура не позволяет реализовать какую-либо возможность, она должна быть эмулирована программно. Производители должны пройти специфические тесты (conformance tests — тесты на соответствие) прежде чем реализация будет классифицирована как OpenGL-реализация.
Таким образом, разработчикам программного обеспечения достаточно научиться использовать функции, описанные в спецификации, оставив эффективную реализацию последних разработчикам аппаратного обеспечения.
Эффективные реализации OpenGL существуют для Windows, Unix-платформ, PlayStation 3 и Mac OS. Эти реализации обычно предоставляются изготовителями видеоадаптеров и активно используют возможности последних.
Существуют также открытые реализации спецификации OpenGL, одной из которых является библиотека Mesa.
Из лицензионных соображений Mesa является «неофициальной» реализацией OpenGL, хотя полностью с ней совместима на уровне кода и поддерживает как программную эмуляцию, так и аппаратное ускорение при наличии соответствующих драйверов.
Спецификация OpenGL пересматривается консорциумом ARB (Architecture Review Board), который был сформирован в 1992 году. Консорциум состоит из компаний, заинтересованных в создании широко распространённого и доступного API.
Согласно официальному сайту OpenGL, членами ARB с решающим голосом на ноябрь 2004 года являются производители профессиональных графических аппаратных средств SGI, 3Dlabs, Matrox и Evans & Sutherland (военные приложения), производители потребительских графических аппаратных средств ATI и NVIDIA, производитель процессоров Intel, и изготовители компьютеров и компьютерного оборудования IBM, Apple, Dell, Hewlett-Packard и Sun Microsystems, а также один из лидеров компьютерной игровой индустрии id Software. Microsoft, один из основоположников консорциума, покинула его в марте 2003 года. Помимо постоянных членов, каждый год приглашается большое количество других компаний, становящихся частью OpenGL ARB в течение одного года. Такое большое число компаний, вовлеченных в разнообразный круг интересов, позволило OpenGL стать прикладным интерфейсом широкого назначения с большим количеством возможностей.
Курт Экли (Kurt Akeley) и Марк Сигал (Mark Segal) являются авторами оригинальной спецификации OpenGL. Крис Фрэзиер (Chris Frazier) редактировал версию 1.1. Йон Лич (Jon Leech) редактировал версии с 1.2 по версию 2.0.
Архитектура
OpenGL ориентируется на следующие две задачи:
- Скрыть сложности адаптации различных 3D-ускорителей, предоставляя разработчику единый API.
- Скрыть различия в возможностях аппаратных платформ, требуя реализации недостающей функциональности с помощью программной эмуляции.
Основным принципом работы OpenGL является получение наборов векторных графических примитивов в виде точек, линий и многоугольников с последующей математической обработкой полученных данных и построением растровой картинки на экране и/или в памяти.
Векторные трансформации и растеризация выполняются графическим конвейером (graphics pipeline), который по сути представляет собой дискретный автомат.
Абсолютное большинство команд OpenGL попадают в одну из двух групп: либо они добавляют графические примитивы на вход в конвейер, либо конфигурируют конвейер на различное исполнение трансформаций.
OpenGL является низкоуровневым процедурным API, что вынуждает программиста диктовать точную последовательность шагов, чтобы построить результирующую растровую графику (императивный подход).
Это является основным отличием от дескрипторных подходов, когда вся сцена передается в виде структуры данных (чаще всего дерева), которое обрабатывается и строится на экране.
С одной стороны, императивный подход требует от программиста глубокого знания законов трёхмерной графики и математических моделей, с другой стороны — даёт свободу внедрения различных инноваций.
Расширения
Стандарт OpenGL, с появлением новых технологий, позволяет отдельным производителям добавлять в библиотеку функциональность через механизм расширений. Расширения распространяются с помощью двух составляющих: заголовочный файл, в котором находятся прототипы новых функций и констант, а также драйвер устройства, поставляемого разработчиком.
Каждый производитель имеет аббревиатуру, которая используется при именовании его новых функций и констант. Например, компания NVIDIA имеет аббревиатуру NV, которая используется при именовании её новых функций, как, например, glCombinerParameterfvNV(), а также констант, GL_NORMAL_MAP_NV.
Может случиться так, что определённое расширение могут реализовать несколько производителей. В этом случае используется аббревиатура EXT, например, glDeleteRenderbuffersEXT. В случае же, когда расширение одобряется консорциумом ARB, оно приобретает аббревиатуру ARB и становится стандартным расширением.
Обычно расширения, одобренные консорциумом, включаются в одну из следующих спецификаций OpenGL.
Список зарегистрированных расширений можно найти в официальной базе расширений.[1]
Дополнительные библиотеки
Существует ряд библиотек, созданных поверх или в дополнение к OpenGL. Например, библиотека GLU, являющаяся практически стандартным дополнением OpenGL и всегда её сопровождающая, построена поверх последней, то есть использует её функции для реализации своих возможностей.
Другие библиотеки, как, например, GLUT и SDL, созданы для реализации возможностей, недоступных в OpenGL. К таким возможностям относятся создание интерфейса пользователя (окна, кнопки, меню и др.
), настройка контекста рисования (область рисования, использующаяся OpenGL), обработка сообщений от устройств ввода/вывода (клавиатура, мышь и др.), а также работа с файлами.
Обычно, каждый оконный менеджер имеет собственную библиотеку-расширение для реализации вышеописанных возможностей, например, WGL в Windows или GLX в X Window System, однако библиотеки GLUT и SDL являются кросс-платформенными, что облегчает перенос написанных приложений на другие платформы.
Библиотеки GLEW (The OpenGL Extension Wrangler Library) и GLEE (The OpenGL Easy Extension library) созданы для облегчения работы с расширениями и различными версиями OpenGL. Это особенно актуально для программистов в Windows, так как заголовочные и библиотечные файлы, поставляемые с Visual Studio, находятся на уровне версии OpenGL 1.1.
OpenGL имеет только набор геометрических примитивов (точки, линии, многоугольники) из которых создаются все трёхмерные объекты. Порой подобный уровень детализации не всегда удобен при создании сцен.
Поэтому поверх OpenGL были созданы более высокоуровневые библиотеки, такие как Open Inventor и VTK.
Данные библиотеки позволяют оперировать более сложными трёхмерными объектами, что облегчает и ускоряет создание трёхмерной сцены.
GLM (OpenGL Mathematics) — вспомогательная библиотека, предоставляющая программистам на C++ классы и функции для выполнения математических операций. Библиотека может использоваться при создании 3D-программ с использованием OpenGL.[2] Одной из характеристик GLM является то, что реализация основана на спецификации GLSL. Исходный код GLM использует лицензию MIT.
Независимость от языка программирования
Для подтверждения независимости от языка программирования были разработаны различные варианты привязки (binding) функций OpenGL или полностью перенесены на другие языки. Одним из примеров может служить библиотека Java 3D, которая может использовать аппаратное ускорение OpenGL.
Прямая привязка функций реализована в Lightweight Java Game Library[3], которая имеет прямую привязку OpenGL для Java. Sun также выпустила версию Java OpenGL (JOGL), которая предоставляет прямую привязку к Си-функциям OpenGL, в отличие от Java 3D, которая не имеет столь низкоуровневой поддержки.
Официальный сайт OpenGL имеет ссылки на привязки для языков Java, Фортран 90, Perl, Pike, Python, Ada, Visual Basic и Pascal.[4] Имеются также варианты привязки OpenGL для языков C++ и C#.[5]
История
Компьютерная графика нашла широкое распространение и применение в повседневной жизни. Учёные используют компьютерную графику для анализа результатов моделирования. Инженеры и архитекторы используют трёхмерную графику для создания виртуальных моделей.
Кинематографисты создают спецэффекты или полностью анимированные фильмы («Шрек», «История игрушек» и др.). В последние годы широкое распространение получили также компьютерные игры, максимально использующие трёхмерную графику для создания виртуальных миров.
Распространению компьютерной графики сопутствовали свои трудности.
В 1990-х разработка программного продукта, способного работать на большом количестве графического оборудования, была сопряжена с большими временны́ми и финансовыми затратами.
Было необходимо отдельно создавать модули для каждого типа графических адаптеров, что порой приводило к размножению одинакового программного кода. Это сильно тормозило развитие и распространение компьютерной графики.
Silicon Graphics (SGI) специализировалась на создании высокотехнологического графического оборудования и программных средств. Являясь в то время лидером в трёхмерной графике, 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.
Говорили[источник не указан 132 дня], что по сравнению с DirectX главной проблемой OpenGL является консорциум (который и должен заниматься развитием OpenGL), в который входит большое количество компаний с различными интересами, что приводит к длительному периоду принятия новой версии спецификации. OpenGL версии 2.0 была представлена 3Dlabs в ответ на беспокойство относительно медленного и нечёткого направления развития OpenGL. 3Dlabs предложила ряд существенных дополнений к стандарту, наиболее значимым из которого было добавление к ядру OpenGL языка обработки полутонов GLSL (OpenGL Shading Language). Это позволяет программисту заменить фиксированный конвейер OpenGL небольшими программами на специальном языке для создания различных эффектов, таких, как bump mapping, normal mapping, parallax mapping, HDR и т. д.
Однако ещё до введения в стандарт OpenGL языка GLSL существовала возможность разрабатывать спецэффекты на языках ассемблера (расширения vertex_program, fragment_program) и Cg (NVidia C for Graphics). Многие предложенные возможности пока отсутствуют в версии OpenGL 2.0, хотя некоторые из них реализованы многими производителями в виде расширений.
OpenGL 3.0
- Основная статья: OpenGL 3.0
- 11 августа 2008 года Khronos Group представила новую версию спецификации OpenGL.[6]
- Поддерживают видеокарты: 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 (устаревшие компоненты возможно в дальнейшем использовать через расширение GL_ARB_compatibility).
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 (GLSL).
- Порядок вершинных компонентов BGRA (GL_ARB_vertex_array_bgra) — теперь в шейдере можно читать 4-компонентные вершинные атрибуты в формате RGBA.
- Команды отрисовки теперь позволяют модификацию базового индекса вершины (GL_ARB_draw_elements_base_vertex) — теперь легко можно использовать один набор вершинных буферов (для координат и прочих атрибутов) для хранения множества мешей (меньше переключений буферов — быстрее рендеринг).
- Геометрические шейдеры (GL_ARB_geometry_shader4).
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.[7]
Среди нововведений:[8]
- Две новые ступени обработки шейдеров, что позволяет перенести обработку тесселяции с центрального процессора на GPU.
- Прорисовка данных, сгенерированных OpenGL или такими внешними API, как OpenCL, без участия центрального процессора.
- 64-битная двойная точность с плавающей запятой операций с шейдерами и ввода-вывода для увеличения точности и качества рендеринга.
OpenGL 4.1
26 июля 2010 года, Khronos Group анонсировала спецификацию OpenGL 4.1. Спецификация включает в себя обновление GLSL (GL Shading language) до версии 4.10.
Нововведения:
- Полная совместимость с OpenGL ES 2.0 API.
- Возможность опрашивать и загружать бинарные данные для объектов шейдерных программ.
- 64-битные компоненты с плавающей точкой для вершинных шейдеров (повышается геометрическая точность).
Новые расширения:
- Sync-объекты OpenGL, связанные с event-объектами OpenCL.
- Возможность установить значения в буфере трафарета (stencil) во фрагментном шейдере.
- Некоторые особенности для улучшения надёжности, например, при запуске WebGL-приложений.
- Механизмы обратной связи для получения ошибок и предупреждений.
OpenGL 4.2
8 августа 2011 года Khronos Group опубликовала спецификацию OpenGL 4.2 и языка шейдеров GLSL 4.2.[9]
Нововведения:
- Поддержка изменения произвольной части сжатой текстуры, без повторной загрузки в GPU текстуры целиком.
- Поддержка упаковки нескольких 8- и 16-разрядных значений в одно 32-разрядное значение для эффективной обработки шейдеров cо значительным сокращением используемого объёма памяти и повышением пропускной способности.
OpenGL 4.3
6 августа 2012 года Khronos Group опубликовала на SIGGRAPH 2012 спецификации OpenGL 4.3[10][11]. Кроме новых возможностей, OpenGL 4.3 приносит поддержку нового типа шейдеров через расширение GL_ARB_compute_shader. Новая версия обратно совместима с предыдущими.
См. также
Примечания
- Ron Fosner. OpenGL Programming for Windows 95 and Windows NT. Addison-Wesley. ISBN 0-201-40709-4
- Mark Kilgard. OpenGL for the X Window System. Addison-Wesley. ISBN 0-201-48359-9
- OpenGL Architecture Review Board и др. OpenGL Reference Manual: The Official Reference Document to OpenGL, Version 1.4. Addison-Wesley. ISBN 0-321-17383-X
- Randi J. Rost. OpenGL Shading Language. Addison-Wesley. ISBN 0-321-19789-5
- OpenGL Architecture Review Board и др. OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 2, Fifth Edition. Addison-Wesley. ISBN 0-321-33573-2
- Ву М., Дэвис Т., Нейдер Дж., Шрайндер Д. OpenGL. Руководство по программированию. Библиотека программиста. Питер, 2006. ISBN 5-94723-827-6