diff --git a/src/java/org/lwjgl/opengl/GL12.java b/src/java/org/lwjgl/opengl/GL12.java index 435ebb44..32cbb516 100644 --- a/src/java/org/lwjgl/opengl/GL12.java +++ b/src/java/org/lwjgl/opengl/GL12.java @@ -49,6 +49,10 @@ import java.nio.ShortBuffer; */ public final class GL12 { + /* Error codes */ + public static final int GL_TABLE_TOO_LARGE = 0x8031; + + /* Enums */ public static final int GL_PACK_SKIP_IMAGES = 0x806B; public static final int GL_PACK_IMAGE_HEIGHT = 0x806C; public static final int GL_UNPACK_SKIP_IMAGES = 0x806D; diff --git a/src/java/org/lwjgl/opengl/OpenGLException.java b/src/java/org/lwjgl/opengl/OpenGLException.java index d35a1e3b..0a1764fe 100644 --- a/src/java/org/lwjgl/opengl/OpenGLException.java +++ b/src/java/org/lwjgl/opengl/OpenGLException.java @@ -32,6 +32,8 @@ package org.lwjgl.opengl; +import org.lwjgl.opengl.glu.GLU; + /** * $Id$ * @@ -47,7 +49,12 @@ public class OpenGLException extends RuntimeException { * Constructor for OpenGLException. */ public OpenGLException(int gl_error_code) { - super("GL error code: " + gl_error_code); + this(createErrorMessage(gl_error_code)); + } + + private final static String createErrorMessage(int gl_error_code) { + String error_string = GLU.gluErrorString(gl_error_code); + return error_string + " (" + gl_error_code + ")"; } /** diff --git a/src/java/org/lwjgl/opengl/glu/GLU.java b/src/java/org/lwjgl/opengl/glu/GLU.java index 841a8ffb..8eaaaaea 100644 --- a/src/java/org/lwjgl/opengl/glu/GLU.java +++ b/src/java/org/lwjgl/opengl/glu/GLU.java @@ -5,6 +5,7 @@ import java.nio.FloatBuffer; import java.nio.IntBuffer; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; /** * GLU.java @@ -200,4 +201,32 @@ public class GLU implements GLUConstants { return MipMap.gluScaleImage(format, widthIn, heightIn, typeIn, dataIn, widthOut, heightOut, typeOut, dataOut); } + public static String gluErrorString(int error_code) { + switch (error_code) { + case GL11.GL_NO_ERROR: + return "No error"; + case GL11.GL_INVALID_ENUM: + return "Invalid enum"; + case GL11.GL_INVALID_VALUE: + return "Invalid value"; + case GL11.GL_INVALID_OPERATION: + return "Invalid operation"; + case GL11.GL_STACK_OVERFLOW: + return "Stack overflow"; + case GL11.GL_STACK_UNDERFLOW: + return "Stack underflow"; + case GL11.GL_OUT_OF_MEMORY: + return "Out of memory"; + case GL12.GL_TABLE_TOO_LARGE: + return "Table too large"; + case GLU.GLU_INVALID_ENUM: + return "Invalid enum (glu)"; + case GLU.GLU_INVALID_VALUE: + return "Invalid value (glu)"; + case GLU.GLU_OUT_OF_MEMORY: + return "Out of memory (glu)"; + default: + return null; + } + } }