]> git.tdb.fi Git - gldbg.git/blobdiff - flavors/gl/source/arraysize.c
Add a flavor system to allow addition of other OpenGL versions
[gldbg.git] / flavors / gl / source / arraysize.c
diff --git a/flavors/gl/source/arraysize.c b/flavors/gl/source/arraysize.c
new file mode 100644 (file)
index 0000000..00d6a79
--- /dev/null
@@ -0,0 +1,101 @@
+/* $Id$
+
+This file is part of gldbg
+Copyright © 2009-2010  Mikko Rasa, Mikkosoft Productions
+Distributed under the GPL
+*/
+
+#include "arraysize.h"
+
+int typesize(GLenum type)
+{
+       switch(type)
+       {
+       case GL_BYTE: return sizeof(GLbyte);
+       case GL_SHORT: return sizeof(GLshort);
+       case GL_INT: return sizeof(GLint);
+       case GL_UNSIGNED_BYTE: return sizeof(GLubyte);
+       case GL_UNSIGNED_SHORT: return sizeof(GLushort);
+       case GL_UNSIGNED_INT: return sizeof(GLuint);
+       case GL_FLOAT: return sizeof(GLfloat);
+       case GL_DOUBLE: return sizeof(GLdouble);
+       // Short and byte packed types are broken
+       default: return 1;
+       }
+}
+
+int formatsize(GLenum format)
+{
+       switch(format)
+       {
+       case GL_COLOR_INDEX: return 1;
+       case GL_STENCIL_INDEX: return 1;
+       case GL_DEPTH_COMPONENT: return 1;
+       case GL_RED: return 1;
+       case GL_GREEN: return 1;
+       case GL_BLUE: return 1;
+       case GL_ALPHA: return 1;
+       case GL_RGB: return 3;
+       case GL_RGBA: return 4;
+       case GL_BGR: return 3;
+       case GL_BGRA: return 4;
+       case GL_LUMINANCE: return 1;
+       case GL_LUMINANCE_ALPHA: return 2;
+       default: return 1;
+       }
+}
+
+int paramsize(GLenum pname)
+{
+       switch(pname)
+       {
+       // Lighting and material
+       case GL_AMBIENT: return 4;
+       case GL_DIFFUSE: return 4;
+       case GL_AMBIENT_AND_DIFFUSE: return 4;
+       case GL_SPECULAR: return 4;
+       case GL_EMISSION: return 4;
+       case GL_SHININESS: return 1;
+       case GL_COLOR_INDEXES: return 3;
+       case GL_POSITION: return 4;
+       case GL_SPOT_DIRECTION: return 3;
+       case GL_SPOT_EXPONENT: return 1;
+       case GL_SPOT_CUTOFF: return 1;
+       case GL_CONSTANT_ATTENUATION: return 1;
+       case GL_LINEAR_ATTENUATION: return 1;
+       case GL_QUADRATIC_ATTENUATION: return 1;
+       case GL_LIGHT_MODEL_AMBIENT: return 4;
+       case GL_LIGHT_MODEL_LOCAL_VIEWER: return 1;
+       case GL_LIGHT_MODEL_TWO_SIDE: return 1;
+       case GL_LIGHT_MODEL_COLOR_CONTROL: return 1;
+
+       // Texture
+       case GL_TEXTURE_WRAP_S: return 1;
+       case GL_TEXTURE_WRAP_T: return 1;
+       case GL_TEXTURE_WRAP_R: return 1;
+       case GL_TEXTURE_MIN_FILTER: return 1;
+       case GL_TEXTURE_MAG_FILTER: return 1;
+       case GL_TEXTURE_BORDER_COLOR: return 4;
+       case GL_TEXTURE_MIN_LOD: return 1;
+       case GL_TEXTURE_MAX_LOD: return 1;
+       case GL_TEXTURE_BASE_LEVEL: return 1;
+       case GL_TEXTURE_MAX_LEVEL: return 1;
+       case GL_TEXTURE_LOD_BIAS: return 1;
+       case GL_DEPTH_TEXTURE_MODE: return 1;
+       case GL_TEXTURE_COMPARE_MODE: return 1;
+       case GL_TEXTURE_COMPARE_FUNC: return 1;
+       case GL_GENERATE_MIPMAP: return 1;
+       default: return 1;
+       }
+}
+
+int buffersize(GLenum buffer)
+{
+       switch(buffer)
+       {
+       case GL_COLOR: return 4;
+       case GL_DEPTH: return 1;
+       case GL_STENCIL: return 1;
+       default: return 1;
+       }
+}