Java OpenGL
![]() | |
Разработчик(и) | Сообщество JogAmp |
---|---|
Стабильная версия | 2.5.0 / 18 августа 2023 г |
Предварительный выпуск | н/д / подлежит уточнению |
Написано в | Ява , С |
Операционная система | Кросс-платформенный |
Тип | Программное обеспечение для компьютерной 3D-графики (библиотека/API) |
Лицензия | Лицензия BSD |
Веб-сайт | пробежка |
Java OpenGL ( JOGL ) — это библиотека- оболочка , позволяющая OpenGL использовать в языке программирования Java . [1] [2] Первоначально он был разработан Кеннетом Брэдли Расселом и Кристофером Джоном Клайном, а дальнейшее развитие получила группа Game Technology Group компании Sun Microsystems . С 2010 года является независимым проектом с открытым исходным кодом под лицензией BSD . Это эталонная реализация привязок Java для OpenGL (JSR-231).
JOGL обеспечивает доступ к большинству функций OpenGL, доступных программам на языке C , посредством использования собственного интерфейса Java (JNI). Он предлагает доступ как к стандартным функциям GL*, так и к функциям GLU*; однако библиотека OpenGL Utility Toolkit (GLUT) недоступна для вызовов, связанных с оконной системой, поскольку Java имеет свои собственные оконные системы: Abstract Window Toolkit (AWT), Swing и некоторые расширения .
Дизайн
[ редактировать ]Базовый API OpenGL C , а также связанный с ним Windowing API , [3] доступны в JOGL через вызовы Java Native Interface (JNI). Таким образом, для работы JOGL базовая система должна поддерживать OpenGL.
JOGL отличается от некоторых других библиотек-оболочек Java OpenGL тем, что он просто предоставляет процедурный API OpenGL через методы нескольких классов, а не пытается сопоставить функциональность OpenGL с парадигмой объектно-ориентированного программирования . Действительно, большая часть кода JOGL автоматически генерируется из заголовочных файлов OpenGL C с помощью инструмента преобразования GlueGen , который был запрограммирован специально для облегчения создания JOGL.
Статус и стандартизация
[ редактировать ]По состоянию на 2015 год [update]JOGL обеспечивает полный доступ к спецификации OpenGL 4.5, а также почти ко всем расширениям поставщиков (а также OpenCL , OpenMAX и OpenAL ). [4] Версия 1.1.0 является эталонной реализацией JSR-231 (Java Bindings для OpenGL) . [5] Версия 1.1.1 предоставила ограниченный доступ к GLU NURBS , обеспечивая рендеринг изогнутых линий и поверхностей через традиционные API GLU. В выпуске 2.3.2 добавлена поддержка версий OpenGL до 4.5 и версий OpenGL ES до 3.2.
Планируется поддержка Wayland и Vulkan. [6]
Совместимость Java2D-OpenGL
[ редактировать ]Начиная с Java SE 6 версии языка Java , Java2D ( API для рисования двухмерной графики в Java) и JOGL стали совместимыми, что позволяет:
- Наложение компонентов Swing (облегченных меню, всплывающих подсказок и других виджетов ) поверх рендеринга OpenGL . [7]
- Нарисуйте 3D- графику OpenGL поверх рендеринга Java2D (см. здесь кнопку со значком OpenGL).
- Используйте 3D-графику везде, где обычно Swing виджет используется . (Внутри JTable, JTree,...)
- Рисуйте графику Java2D поверх 3D -рендеринга OpenGL .
Учебники
[ редактировать ]- OpenGL ES 2 Образец
- Привет треугольник , gl3 и gl4 Привет треугольник и текстура. Образцы предлагаются на Java и Kotlin.
- Java OpenGL Sample Pack , портирование g-truc OpenGL Sample Pack . Более 230 примеров иллюстрируют почти все функции OpenGL, начиная с ES 2.0 и заканчивая последними расширениями GL, те же из них обычно также называются AZDO (почти нулевые затраты на драйвер).
- современные примеры jogl , Портирование обучения современному программированию 3D-графики, Джейсон Л. МакКессон . Java и Котлин бок о бок.
- Пример немедленного режима (самый простой пример с использованием фиксированного конвейера)
Примеры кода
[ редактировать ] @Override public void display(GLAutoDrawable drawable) { GL4 gl4 = drawable.getGL().getGL4(); gl4.glClearBufferfv(GL2ES3.GL_COLOR, 0, clearColor); gl4.glClearBufferfv(GL2ES3.GL_DEPTH, 0, clearDepth); { FloatUtil.makeLookAt(view, 0, eye, 0, at, 0, up, 0, tmp); FloatUtil.makePerspective(projection, 0, reset, 45f, aspect, near, far); FloatUtil.multMatrix(projection, view); // projection *= view transformPointer.asFloatBuffer().put(projection); } gl4.glUseProgram(programName); gl4.glBindVertexArray(vertexArrayName.get(0)); gl4.glBindBufferBase(GL2ES3.GL_UNIFORM_BUFFER /*target*/, 1 /*TRANSFORM0, index*/, bufferName.get(2) /*TRANSFORM, buffer*/); gl4.glBindTextureUnit(0 /*diffuse*/, textureName.get(0)); gl4.glBindSampler(0 /*diffuse*/, samplerName.get(0)); gl4.glDrawElements(GL.GL_TRIANGLES, elementCount, GL.GL_UNSIGNED_SHORT, 0); }
См. также
[ редактировать ]- Java Bindings для OpenGL , запрос спецификации сообщества Java, для которого JOGL предоставляет реализацию.
- Ardor3D — высокопроизводительный профессионально ориентированный граф сцен, использующий несколько привязок для OpenGL и OpenGL-ES, включая JOGL.
- Elflight Engine — высокопроизводительный игровой движок для 3D-игр, оптимизированный для Интернета.
- JMonkey Engine , высокопроизводительный графический API на основе графа сцены, использующий несколько привязок для OpenGL и OpenGL-ES, включая JOGL.
- Poxnora — многопользовательская онлайн-игра, использующая JOGL.
- RuneScape , MMORPG с использованием JOGL
- Jake2 , Java-порт Quake II, использующий несколько привязок для OpenGL, включая JOGL для его низкоуровневого графического API.
- Scilab — программа численных вычислений, использующая JOGL для 2D- и 3D-рендеринга.
- ClearVolume — библиотека трехмерной визуализации в реальном времени на базе JOGL, разработанная для высококлассных объемных световых микроскопов .
- LWJGL , альтернативная библиотека-оболочка OpenGL с открытым исходным кодом.
- Java OpenAL
- Java OpenCL
Ссылки
[ редактировать ]- ^ Фризен, Джефф (18 сентября 2008 г.). «Java-проекты с открытым исходным кодом: Java Binding для OpenGL (JOGL)» . Учебные пособия по Java с открытым исходным кодом. JavaWorld . Проверено 23 июля 2020 г.
JOGL зародился как проект под названием Jungle, созданный экспертами по 3D-графике Кеном Расселом (из Sun Microsystems) и Крисом Клайном (из Irrational Games).
- ^ Дэвис, Джин (21 февраля 2005 г.). «Привет, Йогл» . JavaWorld . Проверено 23 июля 2020 г.
- ^ «3D и мультимедиа на разных платформах и устройствах с использованием JOGL» (PDF) . СИГРАФ . 27 июля 2010 г. Проверено 6 февраля 2011 г.
- ^ «JOGL — привязка Java для API OpenGL» .
- ^ «JSR-000231 Java-привязки для API OpenGL» . Процесс сообщества Java . Проверено 6 февраля 2011 г.
Чтобы обеспечить максимальное участие сообщества в привязке Java для API OpenGL, мы используем проект JOGL на java.net, который можно найти по адресу https://jogl.dev.java.net . Исходный код JOGL можно найти там, он распространяется по либеральной лицензии на исходный код (в основном лицензируется как BSD, за исключением тех случаев, когда мы используем лицензионный код других сторон). Мы делаем снимок кода этого проекта каждые несколько месяцев, запускаем комплект совместимости технологий с исходным кодом, а затем официально делаем его эталонной реализацией для каждой формальной привязки Java для выпуска OpenGL API.
- ^ «Ошибка 794 — Добавление совместимости окон/поверхностей Wayland» . 05.08.2013.
- ^ «Руководство пользователя JOGL» .
Внешние ссылки
[ редактировать ]- Официальный сайт
- Спецификация JOGL 2.3.x
- JSR-231 Java Bindings для веб-сайта OpenGL
- набор инструментов , Примеры Руководства по программированию OpenGL с использованием JOGL
- Учебные пособия NeHe и пример кода
- Настройка проекта JogAmp JOGL в вашей любимой IDE
- Viewer3D , апплет для отображения интерактивного 3D-контента с помощью JOGL.
- Eclipse OpenGL Pack Плагин OpenGL для Eclipse IDE