Java Binding for OpenGL ® 1.1.0 API Change Log

This change log document contains the proposed changes for the Java Binding for OpenGL 1.1.0 API. These changes are the result of discussion on the JOGL forum.

The changes have already been integrated into the daily and milestone implementation builds that can be found at the JOGL java.net site. The latest version of the proposed 1.1.0 specification that integrates all of the proposed changes found in this document can also be found there.



I. Proposed Changes

Here is the list of our proposed changes for the Java Binding for OpenGL version 1.1.0 API. All of these changes are within the javax.media.opengl package:

  1. Add getChosenGLCapabilities to the API drawables
  2. Add copy context functionality to the GLContext class
  3. Changes to GL class for the OpenGL 2.1 binding
  4. Changes to DebugGL and TraceGL classes for the OpenGL 2.1 binding



1. Add getChosenGLCapabilities to the API drawables

We propose to add a method for querying the chosen capabilities (i.e., pixel format, visual) for each of the drawables in the javax.media.opengl package.

GLDrawable:
new method:
	public GLCapabilities  getChosenGLCapabilities()

GLCanvas:
new method:
	public GLCapabilities  getChosenGLCapabilities()

GLJPanel:
new method:
	public GLCapabilities  getChosenGLCapabilities()



2. We propose to add the ability to copy a context in the GLContext class


GLContext:
new method:
	public abstract  void  copy(GLContext source, int mask)


3. We propose the following changes to the GL class which are required for the OpenGL 2.1 binding

These changes incorporate both the necessary additions for the standard OpenGL 2.1 binding as well as the latest Nvidia GeForce 8 series OpenGL extensions.

GL:

change field value:
	public static final int GL_GLEXT_VERSION = 36;

Remove fields:
	public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENTS_EXT = 0x8CD6;
	public static final int GL_FRAMEBUFFER_STATUS_ERROR_EXT = 0x8CDE;
	public static final int GL_STENCIL_INDEX_EXT = 0x8D45;


Add fields:
	public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = 0x8CD6;
	public static final int GL_CURRENT_RASTER_SECONDARY_COLOR = 0x845F;
	public static final int GL_PIXEL_PACK_BUFFER = 0x88EB;
	public static final int GL_PIXEL_UNPACK_BUFFER = 0x88EC;
	public static final int GL_PIXEL_PACK_BUFFER_BINDING = 0x88ED;
	public static final int GL_PIXEL_UNPACK_BUFFER_BINDING = 0x88EF;
	public static final int GL_FLOAT_MAT2x3 = 0x8B65;
	public static final int GL_FLOAT_MAT2x4 = 0x8B66;
	public static final int GL_FLOAT_MAT3x2 = 0x8B67;
	public static final int GL_FLOAT_MAT3x4 = 0x8B68;
	public static final int GL_FLOAT_MAT4x2 = 0x8B69;
	public static final int GL_FLOAT_MAT4x3 = 0x8B6A;
	public static final int GL_SRGB = 0x8C40;
	public static final int GL_SRGB8 = 0x8C41;
	public static final int GL_SRGB_ALPHA = 0x8C42;
	public static final int GL_SRGB8_ALPHA8 = 0x8C43;
	public static final int GL_SLUMINANCE_ALPHA = 0x8C44;
	public static final int GL_SLUMINANCE8_ALPHA8 = 0x8C45;
	public static final int GL_SLUMINANCE = 0x8C46;
	public static final int GL_SLUMINANCE8 = 0x8C47;
	public static final int GL_COMPRESSED_SRGB = 0x8C48;
	public static final int GL_COMPRESSED_SRGB_ALPHA = 0x8C49;
	public static final int GL_COMPRESSED_SLUMINANCE = 0x8C4A;
	public static final int GL_COMPRESSED_SLUMINANCE_ALPHA = 0x8C4B;
	public static final int GL_RENDERBUFFER_RED_SIZE_EXT = 0x8D50;
	public static final int GL_RENDERBUFFER_GREEN_SIZE_EXT = 0x8D51;
	public static final int GL_RENDERBUFFER_BLUE_SIZE_EXT = 0x8D52;
	public static final int GL_RENDERBUFFER_ALPHA_SIZE_EXT = 0x8D53;
	public static final int GL_RENDERBUFFER_DEPTH_SIZE_EXT = 0x8D54;
	public static final int GL_RENDERBUFFER_STENCIL_SIZE_EXT = 0x8D55;
	public static final int GL_DEPTH_STENCIL_EXT = 0x84F9;
	public static final int GL_UNSIGNED_INT_24_8_EXT = 0x84FA;
	public static final int GL_DEPTH24_STENCIL8_EXT = 0x88F0;
	public static final int GL_TEXTURE_STENCIL_SIZE_EXT = 0x88F1;
	public static final int GL_STENCIL_TAG_BITS_EXT = 0x88F2;
	public static final int GL_STENCIL_CLEAR_TAG_VALUE_EXT = 0x88F3;
	public static final int GL_SRGB_EXT = 0x8C40;
	public static final int GL_SRGB8_EXT = 0x8C41;
	public static final int GL_SRGB_ALPHA_EXT = 0x8C42;
	public static final int GL_SRGB8_ALPHA8_EXT = 0x8C43;
	public static final int GL_SLUMINANCE_ALPHA_EXT = 0x8C44;
	public static final int GL_SLUMINANCE8_ALPHA8_EXT = 0x8C45;
	public static final int GL_SLUMINANCE_EXT = 0x8C46;
	public static final int GL_SLUMINANCE8_EXT = 0x8C47;
	public static final int GL_COMPRESSED_SRGB_EXT = 0x8C48;
	public static final int GL_COMPRESSED_SRGB_ALPHA_EXT = 0x8C49;
	public static final int GL_COMPRESSED_SLUMINANCE_EXT = 0x8C4A;
	public static final int GL_COMPRESSED_SLUMINANCE_ALPHA_EXT = 0x8C4B;
	public static final int GL_COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C;
	public static final int GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D;
	public static final int GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E;
	public static final int GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F;
	public static final int GL_READ_FRAMEBUFFER_EXT = 0x8CA8;
	public static final int GL_DRAW_FRAMEBUFFER_EXT = 0x8CA9;
	public static final int GL_READ_FRAMEBUFFER_BINDING_EXT = 0x8CA6;
	public static final int GL_DRAW_FRAMEBUFFER_BINDING_EXT = 0x8CAA;
	public static final int GL_RENDERBUFFER_SAMPLES_EXT = 0x8CAB;
	public static final int GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = 0x8D56;
	public static final int GL_MAX_SAMPLES_EXT = 0x8D57;
	public static final int GL_TEXTURE_1D_STACK_MESAX = 0x875#! /bin/bash

dircmp=cmp-old2new

GLFILES="$dircmp/GL2ES1-new.java \
 $dircmp/GLES1-new.java \
 $dircmp/GL2ES2-new.java \
 $dircmp/GLES2-new.java \
 $dircmp/GL3ES3-new.java \
 $dircmp/GL2GL3-new.java \
 $dircmp/GL2-new.java \
 $dircmp/GL3-new.java \
 $dircmp/GL3bc-new.java \
 $dircmp/GL4ES3-new.java \
 $dircmp/GLES3-new.java \
 $dircmp/GL4-new.java \
 $dircmp/GL4bc-new.java \
 $dircmp/GL-new.java"

GL4FILES="$dircmp/GL2ES2-new.java \
 $dircmp/GL2ES3-new.java \
 $dircmp/GL3ES3-new.java \
 $dircmp/GL3-new.java \
 $dircmp/GL4ES3-new.java \
 $dircmp/GL4-new.java \
 $dircmp/GL-new.java"

GLES3FILES="$dircmp/GL2ES2-new.java \
 $dircmp/GL2ES3-new.java \
 $dircmp/GL3ES3-new.java \
 $dircmp/GL4ES3-new.java \
 $dircmp/GLES3-new.java \
 $dircmp/GL-new.java"

GLES1FILES="$dircmp/GL2ES1-new.java \
 $dircmp/GLES1-new.java \
 $dircmp/GL-new.java"

GLES2FILES="$dircmp/GL2ES2-new.java \
 $dircmp/GLES2-new.java \
 $dircmp/GL-new.java"

GL2ES2FILES="$dircmp/GL2ES2-new.java \
 $dircmp/GLES2-new.java \
 $dircmp/GL2-new.java \
 $dircmp/GL-new.java"

GL3ES3FILES="$dircmp/GL2ES2-new.java \
 $dircmp/GL3ES3-new.java \
 $dircmp/GL4ES3-new.java \
 $dircmp/GLES3-new.java \
 $dircmp/GL3-new.java \
 $dircmp/GL4-new.java \
 $dircmp/GL-new.java"

echo Duplicates GL GL2ES1 GL2ES2 GL2GL3 GL3 GL3bc GL4 GL4bc > $dircmp/GL4Files.dups
cat $GL4FILES | sort | uniq -d >> $dircmp/GL4Files.dups

echo Duplicates GL GL2ES1 GLES1 > $dircmp/GLES1Files.dups
cat $GLES1FILES | sort | uniq -d >> $dircmp/GLES1Files.dups

echo Duplicates GL GL2ES2 GLES2 > $dircmp/GLES2Files.dups
cat $GLES2FILES | sort | uniq -d >> $dircmp/GLES2Files.dups

echo Duplicates GL GL2ES2 GL3ES3 GLES3 > $dircmp/GLES3Files.dups
cat $GLES3FILES | sort | uniq -d >> $dircmp/GLES3Files.dups

echo Duplicates GL GL2 GL2ES2 GLES2 > $dircmp/GL2ES2Files.dups
cat $GL2ES2FILES | sort | uniq -d >> $dircmp/GL2ES2Files.dups

echo Duplicates GL GL3 GL2ES2 GL2ES3 GLES3 > $dircmp/GL3ES3Files.dups
cat $GL3ES3FILES | sort | uniq -d >> $dircmp/GL3ES3Files.dups

##
##

echo Duplicates GL3ES3 GLES3 > $dircmp/GLES3-GL3ES3.dups
cat $dircmp/GLES3-new.java $dircmp/GL3ES3-new.java | sort | uniq -d >> $dircmp/GLES3-GL3ES3.dups

echo Diff GL3ES3 GLES3 > $dircmp/GLES3-GL3ES3.diff
diff -Nurdw $dircmp/GLES3-new.java $dircmp/GL3ES3-new.java >> $dircmp/GLES3-GL3ES3.diff

##
##

echo Duplicates GL2GL3 GLES3 > $dircmp/GLES3-GL2GL3.dups
cat $dircmp/GLES3-new.java $dircmp/GL2GL3-new.java | sort | uniq -d >> $dircmp/GLES3-GL2GL3.dups

echo Diff GL2GL3 GLES3 > $dircmp/GLES3-GL2GL3.diff
diff -Nurdw $dircmp/GLES3-new.java $dircmp/GL2GL3-new.java >> $dircmp/GLES3-GL2GL3.diff

##
##

echo Duplicates GL2ES2 GLES3 > $dircmp/GLES3-GL2ES2.dups
cat $dircmp/GLES3-new.java $dircmp/GL2ES2-new.java | sort | uniq -d >> $dircmp/GLES3-GL2ES2.dups

echo Diff GL2ES2 GLES3 > $dircmp/GLES3-GL2ES2.diff
diff -Nurdw $dircmp/GLES3-new.java $dircmp/GL2ES2-new.java >> $dircmp/GLES3-GL2ES2.diff

##
##

echo Duplicates GL2GL3 GL3ES3 > $dircmp/GL3ES3-GL2GL3.dups
cat $dircmp/GL3ES3-new.java $dircmp/GL2GL3-new.java | sort | uniq -d >> $dircmp/GL3ES3-GL2GL3.dups

echo Diff GL2GL3 GL3ES3 > $dircmp/GL3ES3-GL2GL3.diff
diff -Nurdw $dircmp/GL3ES3-new.java $dircmp/GL2GL3-new.java >> $dircmp/GL3ES3-GL2GL3.diff

##
##

echo Duplicates GL2ES2 GL3ES3 > $dircmp/GL3ES3-GL2ES2.dups
cat $dircmp/GL3ES3-new.java $dircmp/GL2ES2-new.java | sort | uniq -d >> $dircmp/GL3ES3-GL2ES2.dups

echo Diff GL2ES2 GL3ES3 > $dircmp/GL3ES3-GL2ES2.diff
diff -Nurdw $dircmp/GL3ES3-new.java $dircmp/GL2ES2-new.java >> $dircmp/GL3ES3-GL2ES2.diff

##
##

ata, int data_offset); public void glGetProgramEnvParameterIivNV(int target, int index, java.nio.IntBuffer params); public void glGetProgramEnvParameterIivNV(int target, int index, int[] params, int params_offset); public void glGetProgramEnvParameterIuivNV(int target, int index, java.nio.IntBuffer params); public void glGetProgramEnvParameterIuivNV(int target, int index, int[] params, int params_offset); public void glGetProgramLocalParameterIivNV(int target, int index, java.nio.IntBuffer params); public void glGetProgramLocalParameterIivNV(int target, int index, int[] params, int params_offset); public void glGetProgramLocalParameterIuivNV(int target, int index, java.nio.IntBuffer params); public void glGetProgramLocalParameterIuivNV(int target, int index, int[] params, int params_offset); public void glGetQueryObjecti64vEXT(int id, int pname, java.nio.LongBuffer params); public void glGetQueryObjecti64vEXT(int id, int pname, long[] params, int params_offset); public void glGetQueryObjectui64vEXT(int id, int pname, java.nio.LongBuffer params); public void glGetQueryObjectui64vEXT(int id, int pname, long[] params, int params_offset); public void glGetTexParameterIivEXT(int target, int pname, java.nio.IntBuffer params); public void glGetTexParameterIivEXT(int target, int pname, int[] params, int params_offset); public void glGetTexParameterIuivEXT(int target, int pname, java.nio.IntBuffer params); public void glGetTexParameterIuivEXT(int target, int pname, int[] params, int params_offset); public void glGetTransformFeedbackVaryingNV(int program, int index, java.nio.IntBuffer location); public void glGetTransformFeedbackVaryingNV(int program, int index, int[] location, int location_offset); public int glGetUniformBufferSizeEXT(int program, int location); public int glGetUniformOffsetEXT(int program, int location); public void glGetUniformuivEXT(int program, int location, java.nio.IntBuffer params); public void glGetUniformuivEXT(int program, int location, int[] params, int params_offset); public int glGetVaryingLocationNV(int program, java.nio.ByteBuffer name); public int glGetVaryingLocationNV(int program, byte[] name, int name_offset); public void glGetVertexAttribIivEXT(int index, int pname, java.nio.IntBuffer params); public void glGetVertexAttribIivEXT(int index, int pname, int[] params, int params_offset); public void glGetVertexAttribIuivEXT(int index, int pname, java.nio.IntBuffer params); public void glGetVertexAttribIuivEXT(int index, int pname, int[] params, int params_offset); public boolean glIsEnabledIndexedEXT(int target, int index); public void glProgramBufferParametersIivNV(int target, int buffer, int index, int count, java.nio.IntBuffer params); public void glProgramBufferParametersIivNV(int target, int buffer, int index, int count, int[] params, int params_offset); public void glProgramBufferParametersIuivNV(int target, int buffer, int index, int count, java.nio.IntBuffer params); public void glProgramBufferParametersIuivNV(int target, int buffer, int index, int count, int[] params, int params_offset); public void glProgramBufferParametersfvNV(int target, int buffer, int index, int count, java.nio.FloatBuffer params); public void glProgramBufferParametersfvNV(int target, int buffer, int index, int count, float[] params, int params_offset); public void glProgramEnvParameterI4iNV(int target, int index, int x, int y, int z, int w); public void glProgramEnvParameterI4ivNV(int target, int index, java.nio.IntBuffer params); public void glProgramEnvParameterI4ivNV(int target, int index, int[] params, int params_offset); public void glProgramEnvParameterI4uiNV(int target, int index, int x, int y, int z, int w); public void glProgramEnvParameterI4uivNV(int target, int index, java.nio.IntBuffer params); public void glProgramEnvParameterI4uivNV(int target, int index, int[] params, int params_offset); public void glProgramEnvParameters4fvEXT(int target, int filter, int n, java.nio.FloatBuffer weights); public void glProgramEnvParameters4fvEXT(int target, int filter, int n, float[] weights, int weights_offset); public void glProgramEnvParametersI4ivNV(int target, int index, int count, java.nio.IntBuffer params); public void glProgramEnvParametersI4ivNV(int target, int index, int count, int[] params, int params_offset); public void glProgramEnvParametersI4uivNV(int target, int index, int count, java.nio.IntBuffer params); public void glProgramEnvParametersI4uivNV(int target, int index, int count, int[] params, int params_offset); public void glProgramLocalParameterI4iNV(int target, int index, int x, int y, int z, int w); public void glProgramLocalParameterI4ivNV(int target, int index, java.nio.IntBuffer params); public void glProgramLocalParameterI4ivNV(int target, int index, int[] params, int params_offset); public void glProgramLocalParameterI4uiNV(int target, int index, int x, int y, int z, int w); public void glProgramLocalParameterI4uivNV(int target, int index, java.nio.IntBuffer params); public void glProgramLocalParameterI4uivNV(int target, int index, int[] params, int params_offset); public void glProgramLocalParameters4fvEXT(int target, int filter, int n, java.nio.FloatBuffer weights); public void glProgramLocalParameters4fvEXT(int target, int filter, int n, float[] weights, int weights_offset); public void glProgramLocalParametersI4ivNV(int target, int index, int count, java.nio.IntBuffer params); public void glProgramLocalParametersI4ivNV(int target, int index, int count, int[] params, int params_offset); public void glProgramLocalParametersI4uivNV(int target, int index, int count, java.nio.IntBuffer params); public void glProgramLocalParametersI4uivNV(int target, int index, int count, int[] params, int params_offset); public void glProgramParameteriEXT(int program, int pname, int value); public void glProgramVertexLimitNV(int target, int limit); public void glRenderbufferStorageMultisampleCoverageNV(int target, int coverageSamples, int colorSamples, int internalformat, int width, int height); public void glRenderbufferStorageMultisampleEXT(int target, int samples, int internalformat, int width, int height); public void glStencilClearTagEXT(int stencilTagBits, int stencilClearTag); public void glTexBufferEXT(int target, int internalformat, int buffer); public void glTexParameterIivEXT(int target, int pname, java.nio.IntBuffer params); public void glTexParameterIivEXT(int target, int pname, int[] params, int params_offset); public void glTexParameterIuivEXT(int target, int pname, java.nio.IntBuffer params); public void glTexParameterIuivEXT(int target, int pname, int[] params, int params_offset); public void glTransformFeedbackAttribsNV(int count, java.nio.IntBuffer attribs, int bufferMode); public void glTransformFeedbackAttribsNV(int count, int[] attribs, int attribs_offset, int bufferMode); public void glTransformFeedbackVaryingsNV(int program, int count, java.nio.IntBuffer locations, int bufferMode); public void glTransformFeedbackVaryingsNV(int program, int count, int[] locations, int locations_offset, int bufferMode); public void glUniform1uiEXT(int location, int v0); public void glUniform1uivEXT(int location, int count, java.nio.IntBuffer value); public void glUniform1uivEXT(int location, int count, int[] value, int value_offset); public void glUniform2uiEXT(int location, int v0, int v1); public void glUniform2uivEXT(int location, int count, java.nio.IntBuffer value); public void glUniform2uivEXT(int location, int count, int[] value, int value_offset); public void glUniform3uiEXT(int location, int v0, int v1, int v2); public void glUniform3uivEXT(int location, int count, java.nio.IntBuffer value); public void glUniform3uivEXT(int location, int count, int[] value, int value_offset); public void glUniform4uiEXT(int location, int v0, int v1, int v2, int v3); public void glUniform4uivEXT(int location, int count, java.nio.IntBuffer value); public void glUniform4uivEXT(int location, int count, int[] value, int value_offset); public void glUniformBufferEXT(int program, int location, int buffer); public void glUniformMatrix2x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); public void glUniformMatrix2x3fv(int location, int count, boolean transpose, float[] value, int value_offset); public void glUniformMatrix2x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); public void glUniformMatrix2x4fv(int location, int count, boolean transpose, float[] value, int value_offset); public void glUniformMatrix3x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); public void glUniformMatrix3x2fv(int location, int count, boolean transpose, float[] value, int value_offset); public void glUniformMatrix3x4fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); public void glUniformMatrix3x4fv(int location, int count, boolean transpose, float[] value, int value_offset); public void glUniformMatrix4x2fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); public void glUniformMatrix4x2fv(int location, int count, boolean transpose, float[] value, int value_offset); public void glUniformMatrix4x3fv(int location, int count, boolean transpose, java.nio.FloatBuffer value); public void glUniformMatrix4x3fv(int location, int count, boolean transpose, float[] value, int value_offset); public void glVertexAttribI1iEXT(int index, int x); public void glVertexAttribI1ivEXT(int index, java.nio.IntBuffer v); public void glVertexAttribI1ivEXT(int index, int[] v, int v_offset); public void glVertexAttribI1uiEXT(int index, int x); public void glVertexAttribI1uivEXT(int index, java.nio.IntBuffer v); public void glVertexAttribI1uivEXT(int index, int[] v, int v_offset); public void glVertexAttribI2iEXT(int index, int x, int y); public void glVertexAttribI2ivEXT(int index, java.nio.IntBuffer v); public void glVertexAttribI2ivEXT(int index, int[] v, int v_offset); public void glVertexAttribI2uiEXT(int index, int x, int y); public void glVertexAttribI2uivEXT(int index, java.nio.IntBuffer v); public void glVertexAttribI2uivEXT(int index, int[] v, int v_offset); public void glVertexAttribI3iEXT(int index, int x, int y, int z); public void glVertexAttribI3ivEXT(int index, java.nio.IntBuffer v); public void glVertexAttribI3ivEXT(int index, int[] v, int v_offset); public void glVertexAttribI3uiEXT(int index, int x, int y, int z); public void glVertexAttribI3uivEXT(int index, java.nio.IntBuffer v); public void glVertexAttribI3uivEXT(int index, int[] v, int v_offset); public void glVertexAttribI4bvEXT(int index, java.nio.ByteBuffer v); public void glVertexAttribI4bvEXT(int index, byte[] v, int v_offset); public void glVertexAttribI4iEXT(int index, int x, int y, int z, int w); public void glVertexAttribI4ivEXT(int index, java.nio.IntBuffer v); public void glVertexAttribI4ivEXT(int index, int[] v, int v_offset); public void glVertexAttribI4svEXT(int index, java.nio.ShortBuffer v); public void glVertexAttribI4svEXT(int index, short[] v, int v_offset); public void glVertexAttribI4ubvEXT(int index, java.nio.ByteBuffer v); public void glVertexAttribI4ubvEXT(int index, byte[] v, int v_offset); public void glVertexAttribI4uiEXT(int index, int x, int y, int z, int w); public void glVertexAttribI4uivEXT(int index, java.nio.IntBuffer v); public void glVertexAttribI4uivEXT(int index, int[] v, int v_offset); public void glVertexAttribI4usvEXT(int index, java.nio.ShortBuffer v); public void glVertexAttribI4usvEXT(int index, short[] v, int v_offset); public void glVertexAttribIPointerEXT(int index, int size, int type, int stride, java.nio.Buffer pointer);


4. We propose the following changes to the DebugGL and TraceGL classes which are required for the OpenGL 2.1 binding

The list of added methods for the TraceGL and DebugGL classes is exactly the same as the list above for GL. There are no field additions to TraceGL and DebugGL, however, just method additions.



II. Accepted Changes



III. Deferred Changes