- Java Bindings for OpenGL
Java Binding for the OpenGL API is a JSR
API specification for theJava SE platform which allows to useOpenGL [All functions in core OpenGL 2.0 have been included.] on theJava Platform .Programming concepts
Core OpenGL API and GLU library calls are available from Java through a thin wrapper looking very much as the original OpenGL C API [Except GLU NURBS routines which are not exposed through the public API.] .
All platform specific libraries (available from the CGL API for
Mac OS X ,GLX forX Window System , and WGL forMicrosoft Windows ) are also abstracted out to create a platform independent way of selectingFramebuffer attributes and performing platform specific Framebuffer operations [Platform-specific extensions are not included in the public API. Each implementation can choose to export some of these APIs via the [http://download.java.net/media/jogl/builds/nightly/javadoc_public/javax/media/opengl/GL.html#getPlatformGLExtensions() GL.getPlatformGLExtensions()] and [http://download.java.net/media/jogl/builds/nightly/javadoc_public/javax/media/opengl/GL.html#getExtension() GL.getExtension(String)] method calls which return Objects whose data types are specific to the given implementation.] .Example
This examples shows how to draw a Polygon (without initialization or repaint code) [Borrowed from [http://nehe.gamedev.net/lesson.asp?index=01 Nehe tutorial] , which code are free to use elsewhere] . Here is the reference C implementation : int DrawGLScene(GLvoid) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(-1.5f,0.0f,-6.0f); // Move Left 1.5 Units glBegin(GL_TRIANGLES); //Drawing Using Triangles glVertex3f( 0.0f, 1.0f, 0.0f); // Top glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right glEnd(); glTranslatef(3.0f,0.0f,0.0f); glBegin(GL_QUADS); // Draw A Quad glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left glEnd(); glFlush(); return TRUE; }
Which translates to the following Java implementation : public void display( [http://download.java.net/media/jogl/builds/nightly/javadoc_public/javax/media/opengl/GLAutoDrawable.html GLAutoDrawable] gLDrawable) { final [http://download.java.net/media/jogl/builds/nightly/javadoc_public/javax/media/opengl/GL.html GL] gl = [http://download.java.net/media/jogl/builds/nightly/javadoc_public/javax/media/opengl/GLAutoDrawable.html#getGL() gLDrawable.getGL()] ; gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); gl.glLoadIdentity(); gl.glTranslatef(-1.5f, 0.0f, -6.0f); gl.glBegin(GL.GL_TRIANGLES); // Drawing Using Triangles gl.glVertex3f(0.0f, 1.0f, 0.0f); // Top gl.glVertex3f(-1.0f, -1.0f, 0.0f); // Bottom Left gl.glVertex3f(1.0f, -1.0f, 0.0f); // Bottom Right gl.glEnd(); gl.glTranslatef(3.0f, 0.0f, 0.0f); gl.glBegin(GL.GL_QUADS); // Draw A Quad gl.glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left gl.glVertex3f(1.0f, 1.0f, 0.0f); // Top Right gl.glVertex3f(1.0f, -1.0f, 0.0f); // Bottom Right gl.glVertex3f(-1.0f, -1.0f, 0.0f); // Bottom Left gl.glEnd(); gl.glFlush(); }
Implementations
*
Java OpenGL : The reference implementation, available onMicrosoft Windows ,Linux ,Mac OS X , and Solaris platforms.References
See also
*
OpenGL
*Java Community Process External links
* [http://www.jcp.org/en/jsr/detail?id=231 JSR web page]
* [https://jogl.dev.java.net/ JOGL home page]
* [http://download.java.net/media/jogl/builds/nightly/javadoc_public/overview-summary.html JSR 231 Specification (draft)]
Wikimedia Foundation. 2010.