Nimbin[12]?Games / Entropie / entropie/src/core/gl.h

Entropie git · main

Entropie festival game; first steps

sdl c game entropie cmake · first commit 2026-10-10 · last commit 2026-11-02 (18 hours ago) · synced 10 hours ago

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.gz
entropie/src/core/gl.h 3.5 KB · 65 lines 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 */