Java OpenGL ( JOGL ) es una biblioteca contenedora que permite utilizar OpenGL en el lenguaje de programación Java . [1] [2] Fue desarrollado originalmente por Kenneth Bradley Russell y Christopher John Kline, y fue desarrollado por Sun Microsystems Game Technology Group. Desde 2010, ha sido un proyecto de código abierto independiente bajo una licencia BSD . Es la implementación de referencia para Java Bindings para OpenGL (JSR-231).
Desarrollador (es) | Comunidad JogAmp |
---|---|
Lanzamiento estable | 2.3.2 / 10 de octubre de 2015 |
Versión de vista previa | 2.3.2 / 10 de octubre de 2015 |
Escrito en | Java , C |
Sistema operativo | Multiplataforma |
Tipo | Software de gráficos por computadora en 3D (biblioteca / API) |
Licencia | Licencia BSD |
Sitio web | jogamp |
JOGL permite el acceso a la mayoría de las funciones de OpenGL disponibles para los programas en lenguaje C mediante el uso de 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 el sistema de ventanas, ya que Java tiene sus propios sistemas de ventanas: Abstract Window Toolkit (AWT), Swing y algunas extensiones .
Diseño
Se accede a la API base de OpenGL C , así como a su API de ventanas asociada , [3] en JOGL a través de llamadas a la interfaz nativa de Java (JNI). Como tal, el sistema subyacente debe ser compatible con OpenGL para que funcione JOGL.
JOGL se diferencia de algunas otras bibliotecas contenedoras de Java OpenGL en que simplemente expone la API de procedimiento de OpenGL a través de métodos en unas pocas clases, en lugar de intentar mapear la funcionalidad de OpenGL en el paradigma de programación orientada a objetos. De hecho, la mayor parte del código JOGL se genera automáticamente a partir de los archivos de encabezado de OpenGL C a través de una herramienta de conversión llamada GlueGen , que se programó específicamente para facilitar la creación de JOGL.
Estado y estandarización
A partir de 2015[actualizar], JOGL proporciona acceso completo a la especificación OpenGL 4.5, así como a casi todas las extensiones de proveedores (y OpenCL , OpenMAX y OpenAL ). [4] La versión 1.1.0 es la implementación de referencia para JSR-231 (Java Bindings para OpenGL) . [5] La versión 1.1.1 dio acceso limitado a GLU NURBS , proporcionando renderizado de líneas curvas y superficies a través de las API de GLU tradicionales. La versión 2.3.2 agregó soporte para versiones de OpenGL hasta 4.5 y versiones de OpenGL ES hasta 3.2.
Está previsto el apoyo de 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 le permite:
- Superponga los componentes de Swing (menús ligeros, información sobre herramientas y otros widgets ) sobre la representación de OpenGL . [7]
- Dibuje gráficos 3D OpenGL sobre la representación Java2D (consulte aquí un botón con un icono de OpenGL).
- Utilice gráficos 3D en cualquier lugar donde normalmente se utilizaría un widget Swing . (Dentro de un JTable, JTree, ...)
- Dibuje gráficos Java2D sobre renderizado 3D OpenGL .
Tutoriales
- Muestra de OpenGL ES 2
- Hola Triángulo , gl3 y gl4 Hola Triángulo y Textura. Las muestras se ofrecen en Java y Kotlin.
- Paquete de muestra de Java OpenGL , portabilidad del paquete de muestra de g-truc OpenGL . Las más de 230 muestras ilustran casi todas las características de OpenGL que van desde ES 2.0 hasta las últimas extensiones GL, las mismas que generalmente también se llaman AZDO (Almost Zero Driver Overhead).
- ejemplos de jogl moderno , Porting of Learning Modern 3D Graphics Programming, Jason L. McKesson . Java y Kotlin uno al lado del otro.
- Muestra de modo inmediato (ejemplo más simple, usando la tubería fija)
Ejemplos de código
@ Override pública sin efecto pantalla ( GLAutoDrawable estirable ) { GL4 GL4 = estirable . getGL (). getGL4 (); gl4 . glClearBufferfv ( GL2ES3 . GL_COLOR , 0 , clearColor ); gl4 . glClearBufferfv ( GL2ES3 . GL_DEPTH , 0 , clearDepth ); { FloatUtil . makeLookAt ( ver , 0 , ojo , 0 , en , 0 , arriba , 0 , tmp ); FloatUtil . makePerspective ( proyección , 0 , restablecer , 45 f , aspecto , cerca , lejos ); FloatUtil . multMatrix ( proyección , vista ); // proyección * = vista transformPointer . asFloatBuffer (). poner ( proyección ); } gl4 . glUseProgram ( nombre del programa ); gl4 . glBindVertexArray ( vertexArrayName . get ( 0 )); gl4 . glBindBufferBase ( GL2ES3 . GL_UNIFORM_BUFFER / * target * / , 1 / * TRANSFORM0, index * / , bufferName . get ( 2 ) / * TRANSFORM, buffer * / ); 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 ); }
Ver también
- Enlaces Java para OpenGL , la solicitud de especificación de la comunidad Java para la que JOGL proporciona una implementación
- Ardor3D , un escenario gráfico de alto rendimiento con orientación profesional que utiliza varios enlaces para OpenGL y OpenGL-ES, incluido JOGL
- Elflight Engine , un motor de juegos 3D de alto rendimiento optimizado para la web
- JMonkey Engine , una API de gráficos basada en gráficos de escena de alto rendimiento que utiliza varios enlaces para OpenGL y OpenGL-ES, incluido JOGL
- Poxnora , un juego multijugador en línea que usa JOGL
- RuneScape , un MMORPG que usa JOGL
- Jake2 , un puerto Java de Quake II que utiliza varios enlaces para OpenGL, incluido JOGL para su API gráfica de bajo nivel
- Scilab , un programa de computación numérica que utiliza JOGL para renderizado 2D y 3D
- ClearVolume , una biblioteca de visualización 3D en vivo en tiempo real impulsada por JOGL diseñada para microscopios volumétricos de hoja de luz de alta gama .
- LWJGL , una biblioteca contenedora OpenGL de código abierto alternativa
- Java OpenAL
- Java OpenCL
Referencias
- ^ 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, que fue creado por los expertos en gráficos 3D Ken Russell (de Sun Microsystems) y Chris Kline (de Irrational Games).
- ^ Davis, Gene (21 de febrero de 2005). "Hola JOGL" . JavaWorld . Consultado el 23 de julio de 2020 .
- ^ "3D y multimedia en plataformas y dispositivos que utilizan JOGL" (PDF) . SIGGRAPH . 2010-07-27 . Consultado el 6 de febrero de 2011 .
- ^ http://jogamp.org/jogl/www/
- ^ "JSR-000231 Java Bindings para la API de OpenGL" . Proceso de la comunidad Java . Consultado el 6 de febrero de 2011 .
Para facilitar la máxima participación de la comunidad para el enlace de Java para la API de OpenGL, utilizamos el proyecto JOGL en java.net que se encuentra en https://jogl.dev.java.net . El código fuente de JOGL se puede encontrar allí, licenciado bajo una licencia de código fuente liberal (en su mayoría licenciado como BSD, excepto cuando usamos código con licencia de otras partes). Tomamos una instantánea del código de este proyecto cada pocos meses, ejecutamos el kit de compatibilidad tecnológica en el código fuente y luego lo convertimos oficialmente en la implementación de referencia para cada enlace formal de Java para la versión de la API de OpenGL.
- ^ "Error 794 - Agregar interoperabilidad Wayland Windowing / Surface" . 2013-08-05.
- ^ http://jogamp.org/jogl/doc/userguide/#overview
enlaces externos
- Página web oficial
- Especificación de JOGL 2.3.x
- JSR-231 Java Bindings para el sitio web de OpenGL
- tool kiet , ejemplos de la Guía de programación de OpenGL usando JOGL
- Tutoriales y código de muestra de NeHe
- Configuración de un proyecto JogAmp JOGL en su IDE favorito
- Viewer3D , un subprograma para mostrar contenido 3D interactivo con JOGL
- Eclipse OpenGL Pack Complemento de OpenGL para Eclipse IDE