Entropie git · main
Entropie festival game; first steps
C 88.5% Markdown 9.1% GLSL 2.3%git clone https://git.christianimmanuel.de/games/Entropie.gitwget https://git.christianimmanuel.de/games/Entropie/archive/Entropie.tar.gzentropie/src/core/gl.h raw
#ifndef CORE_GL_H
#define CORE_GL_H
/*
* OpenGL 3.3 core entry points.
* GL 1.x functions come from libGL; everything newer is loaded at runtime
* through SDL_GL_GetProcAddress. Add new functions to GL_FUNCTION_LIST only.
*/
#include <stdbool.h>
#include <SDL3/SDL_opengl.h>
#define GL_FUNCTION_LIST(X) \
/* shaders */ \
X(PFNGLCREATESHADERPROC, glCreateShader) \
X(PFNGLSHADERSOURCEPROC, glShaderSource) \
X(PFNGLCOMPILESHADERPROC, glCompileShader) \
X(PFNGLGETSHADERIVPROC, glGetShaderiv) \
X(PFNGLGETSHADERINFOLOGPROC, glGetShaderInfoLog) \
X(PFNGLDELETESHADERPROC, glDeleteShader) \
X(PFNGLCREATEPROGRAMPROC, glCreateProgram) \
X(PFNGLATTACHSHADERPROC, glAttachShader) \
X(PFNGLLINKPROGRAMPROC, glLinkProgram) \
X(PFNGLGETPROGRAMIVPROC, glGetProgramiv) \
X(PFNGLGETPROGRAMINFOLOGPROC, glGetProgramInfoLog) \
X(PFNGLUSEPROGRAMPROC, glUseProgram) \
X(PFNGLDELETEPROGRAMPROC, glDeleteProgram) \
/* uniforms */ \
X(PFNGLGETUNIFORMLOCATIONPROC, glGetUniformLocation) \
X(PFNGLUNIFORM1IPROC, glUniform1i) \
X(PFNGLUNIFORM1FPROC, glUniform1f) \
X(PFNGLUNIFORM2FPROC, glUniform2f) \
X(PFNGLUNIFORM3FPROC, glUniform3f) \
X(PFNGLUNIFORM3FVPROC, glUniform3fv) \
X(PFNGLUNIFORM4FVPROC, glUniform4fv) \
X(PFNGLUNIFORM2FVPROC, glUniform2fv) \
X(PFNGLUNIFORM4FPROC, glUniform4f) \
X(PFNGLUNIFORMMATRIX4FVPROC, glUniformMatrix4fv) \
/* buffers & vertex arrays */ \
X(PFNGLGENVERTEXARRAYSPROC, glGenVertexArrays) \
X(PFNGLBINDVERTEXARRAYPROC, glBindVertexArray) \
X(PFNGLDELETEVERTEXARRAYSPROC, glDeleteVertexArrays) \
X(PFNGLGENBUFFERSPROC, glGenBuffers) \
X(PFNGLBINDBUFFERPROC, glBindBuffer) \
X(PFNGLBUFFERDATAPROC, glBufferData) \
X(PFNGLDELETEBUFFERSPROC, glDeleteBuffers) \
X(PFNGLVERTEXATTRIBPOINTERPROC, glVertexAttribPointer) \
X(PFNGLENABLEVERTEXATTRIBARRAYPROC, glEnableVertexAttribArray) \
/* framebuffers */ \
X(PFNGLGENFRAMEBUFFERSPROC, glGenFramebuffers) \
X(PFNGLBINDFRAMEBUFFERPROC, glBindFramebuffer) \
X(PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D) \
X(PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus) \
X(PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers) \
X(PFNGLDRAWBUFFERSPROC, glDrawBuffers) \
X(PFNGLCOLORMASKIPROC, glColorMaski)
#define GL_DECLARE_FN(type, name) extern type name;
GL_FUNCTION_LIST(GL_DECLARE_FN)
#undef GL_DECLARE_FN
/* Loads all entry points. Requires a current GL context. */
bool Gl_load(void);
#endif /* CORE_GL_H */