summary refs log tree commit diff
path: root/misc/opengl
diff options
context:
space:
mode:
authorWlodekM <[email protected]>2024-06-16 10:35:45 +0300
committerWlodekM <[email protected]>2024-06-16 10:35:45 +0300
commitabef6da56913f1c55528103e60a50451a39628b1 (patch)
treeb3c8092471ecbb73e568cd0d336efa0e7871ee8d /misc/opengl
initial commit
Diffstat (limited to 'misc/opengl')
-rw-r--r--misc/opengl/GL1Funcs.h63
-rw-r--r--misc/opengl/GL2Funcs.h36
-rw-r--r--misc/opengl/GLCommon.h102
3 files changed, 201 insertions, 0 deletions
diff --git a/misc/opengl/GL1Funcs.h b/misc/opengl/GL1Funcs.h
new file mode 100644
index 0000000..663fdf9
--- /dev/null
+++ b/misc/opengl/GL1Funcs.h
@@ -0,0 +1,63 @@
+/* Raster state functions */
+GL_FUNC(void, glAlphaFunc)(GLenum func, GLfloat ref);
+GL_FUNC(void, glBlendFunc)(GLenum sfactor, GLenum dfactor);
+GL_FUNC(void, glClearColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GL_FUNC(void, glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+GL_FUNC(void, glDepthFunc)(GLenum func);
+GL_FUNC(void, glDepthMask)(GLboolean flag);
+GL_FUNC(void, glDisable)(GLenum cap);
+GL_FUNC(void, glDisableClientState)(GLenum array);
+GL_FUNC(void, glEnable)(GLenum cap);
+GL_FUNC(void, glEnableClientState)(GLenum array);
+
+/* Fog functions */
+GL_FUNC(void, glFogf)(GLenum pname, GLfloat param);
+GL_FUNC(void, glFogfv)(GLenum pname, const GLfloat* params);
+GL_FUNC(void, glFogi)(GLenum pname, GLint param);
+GL_FUNC(void, glFogiv)(GLenum pname, const GLint* params);
+
+/* Transform functions */
+GL_FUNC(void, glLoadIdentity)(void);
+GL_FUNC(void, glLoadMatrixf)(const GLfloat* m);
+GL_FUNC(void, glMatrixMode)(GLenum mode);
+GL_FUNC(void, glViewport)(GLint x, GLint y, GLsizei width, GLsizei height);
+
+/* Draw functions */
+GL_FUNC(void, glDrawArrays)(GLenum mode, GLint first, GLsizei count);
+GL_FUNC(void, glDrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+GL_FUNC(void, glColorPointer)(GLint size, GLenum type, GLsizei stride, GLpointer pointer);
+GL_FUNC(void, glTexCoordPointer)(GLint size, GLenum type, GLsizei stride, GLpointer pointer);
+GL_FUNC(void, glVertexPointer)(GLint size, GLenum type, GLsizei stride, GLpointer pointer);
+
+/* Misc functions */
+GL_FUNC(void, glClear)(GLuint mask);
+GL_FUNC(void, glHint)(GLenum target, GLenum mode);
+GL_FUNC(void, glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+
+/* Texture functions */
+GL_FUNC(void, glBindTexture)(GLenum target, GLuint texture);
+GL_FUNC(void, glDeleteTextures)(GLsizei n, const GLuint* textures);
+GL_FUNC(void, glGenTextures)(GLsizei n, GLuint* textures);
+GL_FUNC(void, glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+GL_FUNC(void, glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
+GL_FUNC(void, glTexParameteri)(GLenum target, GLenum pname, GLint param);
+
+/* State get functions */
+GL_FUNC(GLenum,         glGetError)(void);
+GL_FUNC(void,           glGetFloatv)(GLenum pname, GLfloat* params);
+GL_FUNC(void,           glGetIntegerv)(GLenum pname, GLint* params);
+GL_FUNC(const GLubyte*, glGetString)(GLenum name);
+
+/* Legacy display list functions */
+GL_FUNC(void,   glCallList)(GLuint list);
+GL_FUNC(void,   glDeleteLists)(GLuint list, GLsizei range);
+GL_FUNC(GLuint, glGenLists)(GLsizei range);
+GL_FUNC(void,   glNewList)(GLuint list, GLenum mode);
+GL_FUNC(void,   glEndList)(void);
+
+/* Legacy vertex draw functions */
+GL_FUNC(void,   glBegin)(GLenum mode);
+GL_FUNC(void,   glEnd)(void);
+GL_FUNC(void,   glColor4ub)(GLubyte r, GLubyte g, GLubyte b, GLubyte a);
+GL_FUNC(void,   glTexCoord2f)(float u, float v);
+GL_FUNC(void,   glVertex3f)(float x, float y, float z);
\ No newline at end of file
diff --git a/misc/opengl/GL2Funcs.h b/misc/opengl/GL2Funcs.h
new file mode 100644
index 0000000..da12075
--- /dev/null
+++ b/misc/opengl/GL2Funcs.h
@@ -0,0 +1,36 @@
+/* Buffer functions */
+GL_FUNC(void,   glBindBuffer)(GLenum target, GLuint buffer);
+GL_FUNC(void,   glDeleteBuffers)(GLsizei n, const GLuint* buffers);
+GL_FUNC(void,   glGenBuffers)(GLsizei n, GLuint *buffers);
+GL_FUNC(void,   glBufferData)(GLenum target, cc_uintptr size, const GLvoid* data, GLenum usage);
+GL_FUNC(void,   glBufferSubData)(GLenum target, cc_uintptr offset, cc_uintptr size, const GLvoid* data);
+
+/* Shader functions */
+GL_FUNC(GLuint, glCreateShader)(GLenum type);
+GL_FUNC(void,   glDeleteShader)(GLuint shader);
+GL_FUNC(void,   glGetShaderiv)(GLuint shader, GLenum pname, GLint* params);
+GL_FUNC(void,   glGetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei* length, char* infoLog);
+GL_FUNC(void,   glShaderSource)(GLuint shader, GLsizei count, const char* const* string, const GLint* length);
+
+GL_FUNC(void,   glAttachShader)(GLuint program, GLuint shader);
+GL_FUNC(void,   glBindAttribLocation)(GLuint program, GLuint index, const char* name);
+GL_FUNC(void,   glCompileShader)(GLuint shader);
+GL_FUNC(void,   glDetachShader)(GLuint program, GLuint shader);
+GL_FUNC(void,   glLinkProgram)(GLuint program);
+
+/* Program functions */
+GL_FUNC(GLuint, glCreateProgram)(void);
+GL_FUNC(void,   glDeleteProgram)(GLuint program);
+GL_FUNC(void,   glGetProgramiv)(GLuint program, GLenum pname, GLint* params);
+GL_FUNC(void,   glGetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei* length, char* infoLog);
+GL_FUNC(void,   glUseProgram)(GLuint program);
+
+GL_FUNC(void,   glDisableVertexAttribArray)(GLuint index);
+GL_FUNC(void,   glEnableVertexAttribArray)(GLuint index);
+GL_FUNC(void,   glVertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer);
+
+GL_FUNC(GLint,  glGetUniformLocation)(GLuint program, const char* name);
+GL_FUNC(void,   glUniform1f)(GLint location, GLfloat v0);
+GL_FUNC(void,   glUniform2f)(GLint location, GLfloat v0, GLfloat v1);
+GL_FUNC(void,   glUniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GL_FUNC(void,   glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
\ No newline at end of file
diff --git a/misc/opengl/GLCommon.h b/misc/opengl/GLCommon.h
new file mode 100644
index 0000000..8b56922
--- /dev/null
+++ b/misc/opengl/GLCommon.h
@@ -0,0 +1,102 @@
+#if defined CC_BUILD_WIN
+	/* Avoid pointless includes */
+	#define WIN32_LEAN_AND_MEAN
+	#define NOSERVICE
+	#define NOMCX
+	#define NOIME
+	#include <windows.h>
+	#define GLAPI WINGDIAPI
+#else
+	#define GLAPI extern
+	#define APIENTRY
+#endif
+
+typedef unsigned int GLenum;
+typedef unsigned char GLboolean;
+typedef signed char GLbyte;
+typedef int GLint;
+typedef int GLsizei;
+typedef unsigned char GLubyte;
+typedef unsigned int GLuint;
+typedef float GLfloat;
+typedef void GLvoid;
+
+/* NOTE: With the OpenGL 1.1 backend "pointer" arguments are actual pointers, */
+/* but with VBOs they are just offsets instead */
+#ifdef CC_BUILD_GL11
+typedef const void* GLpointer;
+#else
+typedef cc_uintptr GLpointer;
+#endif
+
+#define GL_LEQUAL                0x0203
+#define GL_GREATER               0x0204
+
+#define GL_DEPTH_BUFFER_BIT      0x00000100
+#define GL_COLOR_BUFFER_BIT      0x00004000
+
+#define GL_LINES                 0x0001
+#define GL_TRIANGLES             0x0004
+#define GL_QUADS                 0x0007
+
+#define GL_BLEND                 0x0BE2
+#define GL_SRC_ALPHA             0x0302
+#define GL_ONE_MINUS_SRC_ALPHA   0x0303
+
+#define GL_UNSIGNED_BYTE         0x1401
+#define GL_UNSIGNED_SHORT        0x1403
+#define GL_UNSIGNED_INT          0x1405
+#define GL_FLOAT                 0x1406
+#define GL_RGBA                  0x1908
+
+#define GL_FOG                   0x0B60
+#define GL_FOG_DENSITY           0x0B62
+#define GL_FOG_END               0x0B64
+#define GL_FOG_MODE              0x0B65
+#define GL_FOG_COLOR             0x0B66
+#define GL_LINEAR                0x2601
+#define GL_EXP                   0x0800
+#define GL_EXP2                  0x0801
+
+#define GL_CULL_FACE             0x0B44
+#define GL_DEPTH_TEST            0x0B71
+#define GL_MATRIX_MODE           0x0BA0
+#define GL_VIEWPORT              0x0BA2
+#define GL_ALPHA_TEST            0x0BC0
+#define GL_MAX_TEXTURE_SIZE      0x0D33
+#define GL_DEPTH_BITS            0x0D56
+
+#define GL_FOG_HINT              0x0C54
+#define GL_NICEST                0x1102
+#define GL_COMPILE               0x1300
+
+#define GL_MODELVIEW             0x1700
+#define GL_PROJECTION            0x1701
+#define GL_TEXTURE               0x1702
+
+#define GL_VENDOR                0x1F00
+#define GL_RENDERER              0x1F01
+#define GL_VERSION               0x1F02
+#define GL_EXTENSIONS            0x1F03
+
+#define GL_TEXTURE_2D            0x0DE1
+#define GL_NEAREST               0x2600
+#define GL_NEAREST_MIPMAP_LINEAR 0x2702
+#define GL_TEXTURE_MAG_FILTER    0x2800
+#define GL_TEXTURE_MIN_FILTER    0x2801
+
+#define GL_VERTEX_ARRAY          0x8074
+#define GL_COLOR_ARRAY           0x8076
+#define GL_TEXTURE_COORD_ARRAY   0x8078
+
+/* Not present in gl.h on Windows (only up to OpenGL 1.1) */
+#define GL_ARRAY_BUFFER          0x8892
+#define GL_ELEMENT_ARRAY_BUFFER  0x8893
+#define GL_STATIC_DRAW           0x88E4
+#define GL_DYNAMIC_DRAW          0x88E8
+
+#define GL_FRAGMENT_SHADER       0x8B30
+#define GL_VERTEX_SHADER         0x8B31
+#define GL_COMPILE_STATUS        0x8B81
+#define GL_LINK_STATUS           0x8B82
+#define GL_INFO_LOG_LENGTH       0x8B84
\ No newline at end of file