Java Bindings for OpenGL: Difference between revisions
Content deleted Content added
No edit summary |
Undid revision 243801828 by 59.92.32.217 (talk) |
||
Line 7: | Line 7: | ||
==Example== |
==Example== |
||
This examples shows how to draw a Polygon (without initialization or repaint code) <ref>Borrowed from [http://nehe.gamedev.net/lesson.asp?index=01 Nehe tutorial], which code are free to use elsewhere</ref>. Here is the reference [[C (programming language)|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 |
glBegin(GL_QUADS); // Draw A Quad |
||
glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left |
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); // Top Right |
||
glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom 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 (programming language)|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.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); |
||
gl.glLoadIdentity(); |
gl.glLoadIdentity(); |
Revision as of 02:22, 8 October 2008
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 CGL 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[3].
Example
This examples shows how to draw a Polygon (without initialization or repaint code) [4]. 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(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
- Java OpenGL : The reference implementation, available on Microsoft Windows, Linux, Mac OS X, and Solaris platforms.
References
- ^ All functions in core OpenGL 2.0 have been included.
- ^ Except GLU NURBS routines which are not exposed through the public API.
- ^ Platform-specific extensions are not included in the public API. Each implementation can choose to export some of these APIs via the GL.getPlatformGLExtensions() and GL.getExtension(String) method calls which return Objects whose data types are specific to the given implementation.
- ^ Borrowed from Nehe tutorial, which code are free to use elsewhere