#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 #include #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 */