Java OpenGL

JOGL
Демонстраційний скриншот програми, що ілюструє рендеринг заломлення за допомогою JOGL на Mac OS X
ТипПрограмне забезпечення для 3D-графіки (бібліотека/API)
АвториKenneth Bradley Russelld і Christopher John Klined Редагувати інформацію у Вікіданих
РозробникJogAmp Community
Стабільний випуск2.5.0 (18 серпня 2023; 17 місяців тому (2023-08-18))
Платформавіртуальна машина Java Редагувати інформацію у Вікіданих
Операційна системаБагатоплатформна
Мова програмуванняJava, C
ЛіцензіяЛіцензія BSD
Вебсайтjogamp.org/jogl/www/

Java OpenGL (JOGL) — бібліотека-обгортка, що дозволяє використовувати OpenGL у мові програмування Java[1][2]. Спочатку над нею працювали Кеннет Бредлі Рассел та Крістофер Джон Клайн, потім — Game Technology Group у Sun Microsystems. З 2010 року проєкт розповсюджується за ліцензією BSD. Це реалізація Java Bindings for OpenGL (JSR-231).

JOGL надає доступ до більшості функціоналу OpenGL, доступного у програмах мовою C за допомогою Java Native Interface (JNI). Ця бібліотека запроваджує як стандартні функції GL*, так і функції GLU*; однак бібліотека OpenGL Utility Toolkit (GLUT) недоступна для викликів, пов'язаних із віконною системою, бо Java використовує власні: Abstract Window Toolkit (AWT), Swing, та певні розширення.

Дизайн

До базових API на C для OpenGL, та пов'язаного Windowing API[3] у JOGL можна отримати доступ за допомогою викликів до Java Native Interface (JNI). Тобто, для роботи JOGL система має підтримувати OpenGL.

JOGL відрізняється від інших обгорткових бібліотек Java OpenGL тим, що лише пропонує роботу з процедурним API OpenGL за допомогою методів у кількох класах, а не намагається перенести функціонал OpenGL на парадигму ООП. Більшість коду JOGL автоматично згенеровано на базі заголовних файлів C для OpenGL за допомогою інструмента конверсії GlueGen, спеціально створеного для розробки JOGL.

Статус і стандартизація

Станом на 2015, JOGL пропонує повноцінний доступ до OpenGL 4.5, а також до майже всіх його розширень (та OpenCL, OpenMAX і OpenAL).[4] Версія 1.1.0 є імплементацією JSR-231 (Java Bindings for 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 поверх тривимірної візуалізації OpenGL.

Інструкції

Приклади коду

    @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);
    }

Див. також

Примітки

  1. Friesen, Jeff (18 вересня 2008). Open source Java projects: Java Binding for OpenGL (JOGL). JavaWorld. Процитовано 23 липня 2020. JOGL originated as a project named Jungle, which was created by 3D graphics experts Ken Russell (of Sun Microsystems) and Chris Kline (of Irrational Games).
  2. Davis, Gene (21 лютого 2005). Hello JOGL. JavaWorld. Процитовано 23 липня 2020.
  3. 3D & Multimedia Across Platforms and Devices Using JOGL (PDF). SIGGRAPH. 27 липня 2010. Процитовано 6 лютого 2011.
  4. JOGL - Java Binding for the OpenGL API.
  5. JSR-000231 Java Bindings for the OpenGL API. Java Community Process. Процитовано 6 лютого 2011. In order to facilitate maximum community participation for the Java Binding for the OpenGL API, we use the JOGL project on java.net found at https://jogl.dev.java.net. The JOGL source code can be found there, licensed under a liberal source code license (mostly licensed as BSD except where we use other parties' licensed code). We take a snapshot of the code from this project every few months, run the Technology Compatibility Kit on the source code, and then officially make it the Reference Implementation for each formal Java Binding for the OpenGL API release. {{cite web}}: Зовнішнє посилання в |quote= (довідка)
  6. Bug 794 - Add Wayland Windowing/Surface Interoperability. 5 серпня 2013.
  7. JOGL Userguide.

Посилання

Information related to Java OpenGL

Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya