vn/code/gen_opengl.cpp

140 lines
10 KiB
C++
Raw Normal View History

2023-06-17 17:00:55 +00:00
struct opengl_function
{
char *Name;
char *Type;
char *Arguments;
};
struct opengl_function OpenGLFunctionEntries[] =
{
{"BindTexture", "void", "GLenum target, GLuint texture"},
{"BlendFunc", "void", "GLenum sfactor, GLenum dfactor"},
{"Clear", "void", "GLbitfield mask"},
{"ClearAccum", "void", "GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha"},
{"ClearColor", "void", "GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha"},
{"ClearDepth", "void", "GLclampd depth"},
{"ClearIndex", "void", "GLfloat c"},
{"ClearStencil", "void", "GLint s"},
{"ClipPlane", "void", "GLenum plane, const GLdouble *equation"},
{"CullFace", "void", "GLenum mode"},
{"DeleteTextures", "void", "GLsizei n, const GLuint *textures"},
{"Disable", "void", "GLenum cap"},
{"DrawArrays", "void", "GLenum mode, GLint first, GLsizei count"},
{"DrawBuffer", "void", "GLenum mode"},
{"DrawElements", "void", "GLenum mode, GLsizei count, GLenum type, const GLvoid *indices"},
{"DrawArraysInstanced", "void", "GLenum mode, GLint first, GLsizei count, GLsizei instancecount"},
{"Enable", "void", "GLenum cap"},
{"GenTextures", "void", "GLsizei n, GLuint *textures"},
{"GetClipPlane", "void", "GLenum plane, GLdouble *equation"},
{"GetDoublev", "void", "GLenum pname, GLdouble *params"},
{"GetError", "GLenum", "void"},
{"GetFloatv", "void", "GLenum pname, GLfloat *params"},
{"GetIntegerv", "void", "GLenum pname, GLint *params"},
{"GetPointerv", "void", "GLenum pname, GLvoid* *params"},
{"GetString", "const GLubyte *", "GLenum name"},
{"GetTexEnvfv", "void", "GLenum target, GLenum pname, GLfloat *params"},
{"GetTexEnviv", "void", "GLenum target, GLenum pname, GLint *params"},
{"GetTexGendv", "void", "GLenum coord, GLenum pname, GLdouble *params"},
{"GetTexGenfv", "void", "GLenum coord, GLenum pname, GLfloat *params"},
{"GetTexGeniv", "void", "GLenum coord, GLenum pname, GLint *params"},
{"GetTexImage", "void", "GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels"},
{"GetTexLevelParameterfv", "void", "GLenum target, GLint level, GLenum pname, GLfloat *params"},
{"GetTexLevelParameteriv", "void", "GLenum target, GLint level, GLenum pname, GLint *params"},
{"GetTexParameterfv", "void", "GLenum target, GLenum pname, GLfloat *params"},
{"GetTexParameteriv", "void", "GLenum target, GLenum pname, GLint *params"},
{"Hint", "void", "GLenum target, GLenum mode"},
{"IsTexture", "GLboolean", "GLuint texture"},
{"LineWidth", "void", "GLfloat width"},
{"ListBase", "void", "GLuint base"},
{"LoadName", "void", "GLuint name"},
{"LogicOp", "void", "GLenum opcode"},
{"PointSize", "void", "GLfloat size"},
{"PolygonMode", "void", "GLenum face, GLenum mode"},
{"Scissor", "void", "GLint x, GLint y, GLsizei width, GLsizei height"},
{"TexImage1D", "void", "GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels"},
{"TexImage2D", "void", "GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels"},
{"TexParameterf", "void", "GLenum target, GLenum pname, GLfloat param"},
{"TexParameterfv", "void", "GLenum target, GLenum pname, const GLfloat *params"},
{"TexParameteri", "void", "GLenum target, GLenum pname, GLint param"},
{"TexParameteriv", "void", "GLenum target, GLenum pname, const GLint *params"},
{"TexSubImage1D", "void", "GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels"},
{"TexSubImage2D", "void", "GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels"},
{"CompressedTexImage2D", "void", "GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *pixels"},
{"ActiveTexture", "void", "GLenum texture"},
{"Viewport", "void", "GLint x, GLint y, GLsizei width, GLsizei height"},
{"GenBuffers", "void", "GLsizei n, GLuint *buffers"},
{"BindBuffer", "void", "GLenum target, GLuint buffer"},
{"BufferData", "void", "GLenum target, GLsizeiptr size, const void *data, GLenum usage"},
{"BufferSubData", "void", "GLenum target, GLintptr offset, GLsizeiptr size, const void *data"},
{"GenVertexArrays", "void", "GLsizei n, GLuint *arrays"},
{"BindVertexArray", "void", "GLenum array"},
{"GetAttribLocation", "GLint", "GLuint program, const GLchar *name"},
{"EnableVertexAttribArray", "void", "GLuint index"},
{"DisableVertexAttribArray", "void", "GLuint index"},
{"VertexAttribPointer", "void", "GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer"},
{"VertexAttribIPointer", "void", "GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer"},
{"VertexAttribLPointer", "void", "GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer"},
{"VertexAttribDivisor", "void", "GLuint index, GLuint divisor"},
{"CreateShader", "GLuint", "GLenum type"},
{"ShaderSource", "void", "GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length"},
{"CompileShader", "void", "GLuint shader"},
{"DeleteShader", "void", "GLuint shader"},
{"GetShaderiv", "void", "GLuint shader, GLenum pname, GLint *params"},
{"GetShaderInfoLog", "void", "GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog"},
{"CreateProgram", "GLuint", "void"},
{"UseProgram", "void", "GLuint program"},
{"AttachShader", "void", "GLuint program, GLuint shader"},
{"DeleteProgram", "void", "GLuint program"},
{"LinkProgram", "void", "GLuint program"},
{"GetProgramiv", "void", "GLuint program, GLenum pname, GLint *params"},
{"GetProgramInfoLog", "void", "GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog"},
{"GetUniformLocation", "GLint", "GLuint program, const GLchar *name"},
{"Uniform1i", "void", "GLint location, GLint v0"},
{"Uniform2f", "void", "GLint location, GLfloat v0, GLfloat v1"},
{"Uniform3f", "void", "GLint location, GLfloat v0, GLfloat v1, GLfloat v2"},
{"UniformMatrix4fv", "void", "GLint location, GLsizei count, GLboolean transpose, const GLfloat *value"},
{"DebugMessageCallback", "void", "void (*)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *, const void *), const void *userParam"},
};
static void GenOpenGL(void)
{
FILE *Out = fopen("../code/generated/vn_opengl_functions.h", "wb");
if(Out)
{
for(s32 Index = 0;
Index < ArrayCount(OpenGLFunctionEntries);
++Index)
{
struct opengl_function *Function = OpenGLFunctionEntries + Index;
fprintf(Out, "typedef %s opengl_%s(%s);\n", Function->Type, Function->Name, Function->Arguments);
}
fprintf(Out, "\n");
for(s32 Index = 0;
Index < ArrayCount(OpenGLFunctionEntries);
++Index)
{
struct opengl_function *Function = OpenGLFunctionEntries + Index;
fprintf(Out, "global opengl_%s *gl%s = 0;\n", Function->Name, Function->Name);
}
fprintf(Out, "\n");
fprintf(Out, "extern void *OpenGL_LoadFunction(char *);\n");
fprintf(Out, "\n");
fprintf(Out, "static void OpenGL_LoadAllFunctions(void)\n");
fprintf(Out, "{\n");
for(s32 Index = 0;
Index < ArrayCount(OpenGLFunctionEntries);
++Index)
{
struct opengl_function *Function = OpenGLFunctionEntries + Index;
fprintf(Out, "\tgl%s = (opengl_%s *)OpenGL_LoadFunction(\"gl%s\");\n", Function->Name, Function->Name, Function->Name);
}
fprintf(Out, "}\n");
fclose(Out);
}
}