Articulo de referencia

Java OpenGL

Java OpenGL ( JOGL ) es una biblioteca de envoltura que permite usar OpenGL en el lenguaje de programación Java . [ 1 ] [ 2 ] Fue desarrollada originalmente por Kenneth Bradley ...

Java OpenGL ( JOGL ) es una biblioteca de envoltura que permite usar OpenGL en el lenguaje de programación Java . [ 1 ] [ 2 ] Fue desarrollada originalmente por Kenneth Bradley Russell y Christopher John Kline, y posteriormente por el Game Technology Group de Sun Microsystems . Desde 2010, es un proyecto independiente de código abierto bajo una licencia BSD . Es la implementación de referencia para Java Bindings for OpenGL (JSR-231).

JOGL permite acceder a la mayoría de las funciones de OpenGL disponibles para programas en lenguaje C mediante la Interfaz Nativa de Java (JNI). Ofrece acceso tanto a las funciones GL* estándar como a las funciones GLU*; sin embargo, la biblioteca OpenGL Utility Toolkit (GLUT) no está disponible para llamadas relacionadas con sistemas de ventanas, ya que Java tiene sus propios sistemas de ventanas: Abstract Window Toolkit (AWT), Swing , JavaFX , SWT , su propio NEWT y algunas extensiones .

Diseño

La API básica de OpenGL en C , así como su API de ventanas asociada , [ 3 ] se acceden en JOGL mediante llamadas a la Interfaz Nativa de Java (JNI). Por lo tanto, el sistema subyacente debe ser compatible con OpenGL para que JOGL funcione.

JOGL se diferencia de otras bibliotecas de envoltura de OpenGL para Java en que simplemente expone la API procedimental de OpenGL mediante métodos en algunas clases, en lugar de intentar adaptar la funcionalidad de OpenGL al paradigma de programación orientada a objetos . De hecho, la mayor parte del código de JOGL se autogenera a partir de los archivos de cabecera C de OpenGL mediante una herramienta de conversión llamada GlueGen , programada específicamente para facilitar la creación de JOGL.

Estado y estandarización

A partir de 2025JOGL proporciona acceso completo a la especificación OpenGL 4.6 y OpenGL ES 3.2, así como a casi todas las extensiones de proveedores (y OpenCL , OpenMAX y OpenAL ). [ 4 ] La versión 2.5.0 es la implementación de referencia para JSR-231 (Java Bindings for OpenGL) . [ 5 ] La versión 1.1.1 proporcionó acceso limitado a GLU NURBS , proporcionando renderizado de líneas y superficies curvas a través de las API tradicionales de GLU. La versión 2.6.0 agregó soporte para versiones de OpenGL hasta 4.6 y versiones de OpenGL ES hasta 3.2.

Se planea brindar soporte para Wayland y Vulkan. [ 6 ]

Interoperabilidad Java2D-OpenGL

Desde la versión Java SE 6 del lenguaje Java , Java2D (la API para dibujar gráficos bidimensionales en Java) y JOGL se han vuelto interoperables, lo que permite  :

Tutoriales

  • Ejemplo de OpenGL ES 2
  • Hola Triangle , gl3 y gl4 Hola Triangle y Texture. Los ejemplos se ofrecen en Java y Kotlin.
  • Java OpenGL Sample Pack , una adaptación del paquete de ejemplos de g-truc OpenGL Sample Pack . Los más de 230 ejemplos ilustran casi todas las características de OpenGL, desde ES 2.0 hasta las últimas extensiones GL, algunas de las cuales también se denominan AZDO (Almost Zero Driver Overhead).
  • Ejemplos modernos de jogl , Adaptación de Aprendizaje de Programación de Gráficos 3D Modernos, Jason L. McKesson Archivado el 23/09/2016 en Wayback Machine . Java y Kotlin uno al lado del otro.
  • Ejemplo en modo inmediato (ejemplo más sencillo, utilizando la canalización de gráficos de función fija ).

Ejemplo de código

@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 , 45 f , aspect , near , far );FloatUtil.multMatrix ( proyección , vista ); // proyección * = vistatransformPointer.asFloatBuffer ( ). put ( proyección ) ; }gl4.glUseProgram ( programName ); gl4.glBindVertexArray ( vertexArrayName.get ( 0 ) ) ; gl4.glBindBufferBase ( GL2ES3.GL_UNIFORM_BUFFER / * objetivo*/ , 1 / *TRANSFORM0 , índice * / , bufferName.get ( 2 ) / * TRANSFORM, búfer * / ) ;gl4.glBindTextureUnit ( 0 / *difuso*/ , textureName.get ( 0 ) ) ; gl4.glBindSampler ( 0 / * difuso* / , samplerName.get ( 0 ) ) ;gl4.glDrawElements ( GL.GL_TRIANGLES , elementCount , GL.GL_UNSIGNED_SHORT , 0 ) ; }

Véase también

  • Java Bindings para OpenGL , la solicitud de especificación de la comunidad Java para la cual JOGL proporciona una implementación.
  • Ardor3D , un grafo de escena de alto rendimiento y orientación profesional que utiliza varios enlaces para OpenGL y OpenGL-ES, incluyendo JOGL.
  • JMonkey Engine , una API gráfica de alto rendimiento basada en grafos de escena que utiliza varios enlaces para OpenGL y OpenGL-ES, incluyendo JOGL.
  • Poxnora , un juego multijugador en línea que utiliza JOGL.
  • RuneScape , un MMORPG que utiliza JOGL
  • Jake2 , una versión en Java de Quake II que utiliza varias bibliotecas para OpenGL, incluyendo JOGL para su API gráfica de bajo nivel.
  • Scilab , un programa de cálculo numérico que utiliza JOGL para renderizado 2D y 3D.
  • ClearVolume , una biblioteca de visualización 3D en tiempo real basada en JOGL, diseñada para microscopios de lámina de luz volumétricos de alta gama .
  • LWJGL , una biblioteca de envoltura OpenGL de código abierto alternativa
  • Java OpenAL

Referencias

  1. Friesen, Jeff (18 de septiembre de 2008). "Proyectos Java de código abierto: Java Binding for OpenGL (JOGL)" . Tutoriales de Java de código abierto. JavaWorld . Consultado el 23 de julio de 2020. JOGL se originó como un proyecto llamado Jungle, creado por los expertos en gráficos 3D Ken Russell (de Sun Microsystems) y Chris Kline (de Irrational Games).
  2. Davis, Gene (21 de febrero de 2005). "Hola JOGL" . JavaWorld . Consultado el 23 de julio de 2020 .
  3. "3D y multimedia en diversas plataformas y dispositivos mediante JOGL" (PDF) . SIGGRAPH . 27 de julio de 2010. Consultado el 6 de febrero de 2011 .
  4. "JOGL - Enlace Java para la API OpenGL" .
  5. "JSR-000231 Java Bindings for the OpenGL API" . Java Community Process . Consultado el 6 de febrero de 2011. Para facilitar la máxima participación de la comunidad en el Java Binding para la API de OpenGL, utilizamos el proyecto JOGL en java.net, disponible en jogl.dev.java.net. El código fuente de JOGL se encuentra allí, bajo una licencia de código fuente permisiva (principalmente licencia BSD, excepto cuando utilizamos código licenciado de terceros). Tomamos una instantánea del código de este proyecto cada pocos meses, ejecutamos el Technology Compatibility Kit en el código fuente y, posteriormente, lo convertimos oficialmente en la Implementación de Referencia para cada lanzamiento formal del Java Binding para la API de OpenGL.
  6. "Error 794 - Agregar interoperabilidad de ventanas/superficies de Wayland" . 5 de agosto de 2013.
  7. "Guía del usuario de JOGL" .
  • Sitio web oficialEdita esto en Wikidata
  • Especificación JOGL 2.6.x
  • JSR-231 Enlaces Java para OpenGL (sitio web)
  • kit de herramientas Archivado el 9 de febrero de 2009 en Wayback Machine , Ejemplos de la Guía de programación de OpenGL usando JOGL
  • Tutoriales y código de ejemplo de NeHe
  • Configurar un proyecto JogAmp JOGL en tu IDE favorito
  • Viewer3D , un applet para mostrar contenido 3D interactivo con JOGL.
  • Eclipse OpenGL Pack Complemento OpenGL para el IDE Eclipse