Jump to content

Java Bindings for OpenGL

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Hervegirod (talk | contribs) at 12:14, 15 April 2007 (OPenGL 2.0). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Java Binding for the OpenGL API is a JSR API specification for the Java SE platform which allows to use OpenGL [1] on the Java 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 [2].

All platform specific libraries (available from the AGL API for Mac OS X, GLX for X Window System, and WGL for Microsoft Windows) are also abstracted out to create a platform independent way of selecting Framebuffer attributes and performing platform specific Framebuffer operations.

Example

This examples shows how to draw a Polygon (without initialization or repaint code) [3]. 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();
   gl.glFlush();
   return TRUE;
}

Which translates to the following Java implementation :

public void display(GLAutoDrawable gLDrawable) {
  final GL gl = 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

References

  1. ^ All functions in core OpenGL 2.0 have been included.
  2. ^ Except GLU NURBS routines which are not exposed through the public API.
  3. ^ Borrowed from Nehe tutorial, which code are free to use elsewhere

See also