A demo снимок экрана, иллюстрирующий рефракцию в реальном времени с использованием JOGL на Mac OS X | |
Разработчик (и) | Сообщество JogAmp |
---|---|
Стабильный выпуск | 2.3.2 / 10 октября 2015 г.; 5 лет назад (10.10.2015) |
Предварительный выпуск | 2.3.2 / 10 октября 2015 г.; 5 лет назад (10.10.2015) |
Написано на | Java, C |
Операционная система | Кросс-платформенная |
Тип | Программное обеспечение для трехмерной компьютерной графики (библиотека / API) |
Лицензия | Лицензия BSD |
Веб-сайт | jogamp.org / jogl / www / |
Java OpenGL (JOGL ) является оболочка библиотека, позволяющая использовать OpenGL в языке программирования Java. Первоначально он был разработан Кеннетом Брэдли Расселом и Кристофером Джоном Клайном, а затем был разработан Sun Microsystems Game Technology Group. С 2010 года это независимый проект с открытым исходным кодом под лицензией BSD. Это эталонная реализация Java Bindings для 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, доступны в 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 ). Версия 1.1.0 является эталонной реализацией для JSR-231 (привязки Java для OpenGL). Релиз 1.1.1 предоставил ограниченный доступ к GLU NURBS, обеспечивая рендеринг изогнутых линий и поверхностей с помощью традиционных API-интерфейсов GLU. В выпуске 2.3.2 добавлена поддержка версий OpenGL до 4.5 и версий OpenGL ES до 3.2.
Планируется поддержка Wayland и Vulkan.
Начиная с версии Java SE 6 Java язык, Java2D (API для рисования двухмерной графики в Java) и JOGL стали совместимыми, что позволило ему:
@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 (вид, 0, глаз, 0, в, 0, вверх, 0, tmp); FloatUtil.makePerspective (проекция, 0, сброс, 45f, аспект, рядом, далеко); FloatUtil.multMatrix (проекция, просмотр); // проекция * = просмотр transformPointer.asFloatBuffer (). put (projection); } gl4.glUseProgram (имя_программы); gl4.glBindVertexArray (vertexArrayName.get (0)); gl4.glBindBufferBase (GL2ES3.GL_UNIFORM_BUFFER / * цель * /, 1 / * TRANSFORM0, индекс * /, bufferName.get (2) / * TRANSFORM, buffer * /); gl4.glBindTextureUnit (0 / * диффузный * /, textureName.get (0)); gl4.glBindSampler (0 / * диффузный * /, samplerName.get (0)); gl4.glDrawElements (GL.GL_TRIANGLES, elementCount, GL.GL_UNSIGNED_SHORT, 0); }