Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Java OpenGL ( JOGL ) - это библиотека- оболочка, которая позволяет использовать OpenGL в языке программирования Java . [1] [2] Первоначально он был разработан Кеннетом Брэдли Расселом и Кристофером Джоном Клайном, а затем был разработан Sun Microsystems Game Technology Group. С 2010 года это независимый проект с открытым исходным кодом под лицензией BSD . Это эталонная реализация привязок Java для OpenGL (JSR-231).

JOGL обеспечивает доступ к большинству функций OpenGL, доступных для программ на языке C, посредством использования собственного интерфейса Java (JNI). Он предлагает доступ как к стандартным функциям GL *, так и к функциям GLU *; однако библиотека OpenGL Utility Toolkit (GLUT) недоступна для вызовов, связанных с оконной системой, поскольку Java имеет свои собственные оконные системы: Abstract Window Toolkit (AWT), Swing и некоторые расширения .

Дизайн [ править ]

Базовый OpenGL C API, а также связанный с ним Windowing API , [3] доступны в JOGL через вызовы Java Native Interface (JNI). Таким образом, базовая система должна поддерживать OpenGL для работы JOGL.

JOGL отличается от некоторых других библиотек-оболочек Java OpenGL тем, что он просто предоставляет процедурный API OpenGL через методы нескольких классов, а не пытается сопоставить функциональность OpenGL с парадигмой объектно-ориентированного программирования . Действительно, большая часть кода JOGL автоматически генерируется из файлов заголовков OpenGL C с помощью инструмента преобразования под названием GlueGen , который был специально запрограммирован для облегчения создания JOGL.

Статус и стандартизация [ править ]

По состоянию на 2015 год JOGL обеспечивает полный доступ к спецификации OpenGL 4.5, а также почти ко всем расширениям поставщиков (и OpenCL , OpenMAX и OpenAL ). [4] Версия 1.1.0 является эталонной реализацией JSR-231 (привязки Java для 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]
  • Нарисуйте трехмерную графику OpenGL поверх рендеринга Java2D (см. Здесь кнопку со значком OpenGL).
  • Используйте трехмерную графику везде, где обычно используется виджет 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 , Перенос обучения программированию современной трехмерной графики, Джейсон Л. МакКессон . Ява и Котлин бок о бок.
  • Пример немедленного режима (простейший пример с использованием фиксированного конвейера)

Примеры кода [ править ]

 @Override  общественности  недействительным  дисплей ( GLAutoDrawable  Drawable )  { GL4  GL4  =  вытяжка . getGL (). getGL4 (); gl4 . glClearBufferfv ( GL2ES3 . GL_COLOR ,  0 ,  clearColor );  gl4 . glClearBufferfv ( GL2ES3 . GL_DEPTH ,  0 ,  clearDepth ); {  FloatUtil . makeLookAt ( просмотр ,  0 ,  глаз ,  0 ,  в ,  0 ,  вверх ,  0 ,  tmp );  FloatUtil . makePerspective ( проекция ,  0 ,  сброс ,  45 f ,  аспект ,  близко ,  далеко ); FloatUtil . мультМатрикс ( проекция ,  просмотр );  // проекция * = вид transformPointer . asFloatBuffer (). положить ( проекция );  } gl4 . glUseProgram ( имя программы );  gl4 . glBindVertexArray ( vertexArrayName . получить ( 0 ));  gl4 . glBindBufferBase ( GL2ES3 . GL_UNIFORM_BUFFER  / * цель * / ,  1  / * TRANSFORM0, индекс * / ,  имя_буфера . get ( 2 )  / * ПРЕОБРАЗОВАНИЕ, буфер * / ); gl4 . glBindTextureUnit ( 0  / * диффузный * / ,  textureName . get ( 0 ));  gl4 . glBindSampler ( 0  / * диффузный * / ,  samplerName . get ( 0 )); gl4 . glDrawElements ( GL . GL_TRIANGLES ,  elementCount ,  GL . GL_UNSIGNED_SHORT ,  0 );  }

См. Также [ править ]

  • Привязки Java для 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 , библиотека для 3D-визуализации в реальном времени в реальном времени от JOGL, разработанная для высокопроизводительных объемных световых микроскопов .
  • LWJGL , альтернативная библиотека-оболочка OpenGL с открытым исходным кодом
  • Java OpenAL
  • Java OpenCL

Ссылки [ править ]

  1. Friesen, Джефф (18 сентября 2008 г.). «Проекты Java с открытым исходным кодом: привязка Java для OpenGL (JOGL)» . Учебники по Java с открытым исходным кодом. JavaWorld . Проверено 23 июля 2020 . JOGL возник как проект под названием Jungle, который был создан экспертами по 3D-графике Кеном Расселом (из Sun Microsystems) и Крисом Клайном (из Irrational Games).
  2. Дэвис, Джин (21 февраля 2005 г.). «Привет, JOGL» . JavaWorld . Проверено 23 июля 2020 .
  3. ^ «3D и мультимедиа на разных платформах и устройствах, использующих JOGL» (PDF) . СИГГРАФ . 2010-07-27 . Проверено 6 февраля 2011 .
  4. ^ http://jogamp.org/jogl/www/
  5. ^ «JSR-000231 Java-привязки для OpenGL API» . Процесс сообщества Java . Проверено 6 февраля 2011 . Чтобы обеспечить максимальное участие сообщества в Java Binding для OpenGL API, мы используем проект JOGL на java.net, который находится по адресу https://jogl.dev.java.net . Исходный код JOGL можно найти там, под лицензией либерального исходного кода (в основном под лицензией BSD, за исключением случаев, когда мы используем лицензионный код других сторон). Мы делаем снимок кода этого проекта каждые несколько месяцев, запускаем Technology Compatibility Kit в исходном коде, а затем официально делаем его эталонной реализацией для каждой формальной привязки Java для выпуска OpenGL API.
  6. ^ «Ошибка 794 - добавление функциональной совместимости окон / поверхностей Wayland» . 2013-08-05.
  7. ^ http://jogamp.org/jogl/doc/userguide/#overview

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • JOGL 2.3.x Спецификация
  • Привязки Java JSR-231 для веб-сайта OpenGL
  • tool kiet , Примеры из Руководства по программированию OpenGL с использованием JOGL
  • Учебники и пример кода NeHe
  • Настройка проекта JogAmp JOGL в вашей любимой среде IDE
  • Viewer3D , апплет для отображения интерактивного 3D-контента с помощью JOGL
  • Плагин Eclipse OpenGL Pack OpenGL для Eclipse IDE