#pragma once #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #include #include extern PFNGLATTACHSHADERPROC fn_glAttachShader; extern PFNGLBINDBUFFERPROC fn_glBindBuffer; extern PFNGLBINDFRAMEBUFFERPROC fn_glBindFramebuffer; extern PFNGLBINDVERTEXARRAYPROC fn_glBindVertexArray; extern PFNGLCOMPILESHADERPROC fn_glCompileShader; extern PFNGLCREATEPROGRAMPROC fn_glCreateProgram; extern PFNGLCREATESHADERPROC fn_glCreateShader; extern PFNGLDELETEBUFFERSPROC fn_glDeleteBuffers; extern PFNGLDELETEFRAMEBUFFERSPROC fn_glDeleteFramebuffers; extern PFNGLDELETEPROGRAMPROC fn_glDeleteProgram; extern PFNGLDELETESHADERPROC fn_glDeleteShader; extern PFNGLDELETEVERTEXARRAYSPROC fn_glDeleteVertexArrays; extern PFNGLFRAMEBUFFERTEXTURE2DPROC fn_glFramebufferTexture2D; extern PFNGLGENBUFFERSPROC fn_glGenBuffers; extern PFNGLGENFRAMEBUFFERSPROC fn_glGenFramebuffers; extern PFNGLGENVERTEXARRAYSPROC fn_glGenVertexArrays; extern PFNGLGETPROGRAMINFOLOGPROC fn_glGetProgramInfoLog; extern PFNGLGETPROGRAMIVPROC fn_glGetProgramiv; extern PFNGLGETSHADERINFOLOGPROC fn_glGetShaderInfoLog; extern PFNGLGETSHADERIVPROC fn_glGetShaderiv; extern PFNGLGETUNIFORMLOCATIONPROC fn_glGetUniformLocation; extern PFNGLLINKPROGRAMPROC fn_glLinkProgram; extern PFNGLSHADERSOURCEPROC fn_glShaderSource; extern PFNGLUNIFORM1FPROC fn_glUniform1f; extern PFNGLUNIFORM1IPROC fn_glUniform1i; extern PFNGLUNIFORM2FPROC fn_glUniform2f; extern PFNGLUNIFORM3FPROC fn_glUniform3f; extern PFNGLUNIFORM4FPROC fn_glUniform4f; extern PFNGLUNIFORM4FVPROC fn_glUniform4fv; extern PFNGLUSEPROGRAMPROC fn_glUseProgram; // Texture (gl_texture_load — issue 0026) extern PFNGLACTIVETEXTUREPROC fn_glActiveTexture; extern PFNGLGENERATEMIPMAPPROC fn_glGenerateMipmap; // Buffers / VAO data + draw + vertex attributes (graph_renderer) extern PFNGLBUFFERDATAPROC fn_glBufferData; extern PFNGLDRAWARRAYSINSTANCEDPROC fn_glDrawArraysInstanced; extern PFNGLENABLEVERTEXATTRIBARRAYPROC fn_glEnableVertexAttribArray; extern PFNGLVERTEXATTRIBDIVISORPROC fn_glVertexAttribDivisor; extern PFNGLVERTEXATTRIBPOINTERPROC fn_glVertexAttribPointer; // Renderbuffer / framebuffer texture extern PFNGLBINDRENDERBUFFERPROC fn_glBindRenderbuffer; extern PFNGLDELETERENDERBUFFERSPROC fn_glDeleteRenderbuffers; extern PFNGLFRAMEBUFFERRENDERBUFFERPROC fn_glFramebufferRenderbuffer; extern PFNGLGENRENDERBUFFERSPROC fn_glGenRenderbuffers; extern PFNGLRENDERBUFFERSTORAGEPROC fn_glRenderbufferStorage; extern PFNGLFRAMEBUFFERTEXTUREPROC fn_glFramebufferTexture; // sin "2D" #define glAttachShader fn_glAttachShader #define glBindBuffer fn_glBindBuffer #define glBindFramebuffer fn_glBindFramebuffer #define glBindVertexArray fn_glBindVertexArray #define glCompileShader fn_glCompileShader #define glCreateProgram fn_glCreateProgram #define glCreateShader fn_glCreateShader #define glDeleteBuffers fn_glDeleteBuffers #define glDeleteFramebuffers fn_glDeleteFramebuffers #define glDeleteProgram fn_glDeleteProgram #define glDeleteShader fn_glDeleteShader #define glDeleteVertexArrays fn_glDeleteVertexArrays #define glFramebufferTexture2D fn_glFramebufferTexture2D #define glGenBuffers fn_glGenBuffers #define glGenFramebuffers fn_glGenFramebuffers #define glGenVertexArrays fn_glGenVertexArrays #define glGetProgramInfoLog fn_glGetProgramInfoLog #define glGetProgramiv fn_glGetProgramiv #define glGetShaderInfoLog fn_glGetShaderInfoLog #define glGetShaderiv fn_glGetShaderiv #define glGetUniformLocation fn_glGetUniformLocation #define glLinkProgram fn_glLinkProgram #define glShaderSource fn_glShaderSource #define glUniform1f fn_glUniform1f #define glUniform1i fn_glUniform1i #define glUniform2f fn_glUniform2f #define glUniform3f fn_glUniform3f #define glUniform4f fn_glUniform4f #define glUniform4fv fn_glUniform4fv #define glUseProgram fn_glUseProgram #define glActiveTexture fn_glActiveTexture #define glGenerateMipmap fn_glGenerateMipmap #define glBufferData fn_glBufferData #define glDrawArraysInstanced fn_glDrawArraysInstanced #define glEnableVertexAttribArray fn_glEnableVertexAttribArray #define glVertexAttribDivisor fn_glVertexAttribDivisor #define glVertexAttribPointer fn_glVertexAttribPointer #define glBindRenderbuffer fn_glBindRenderbuffer #define glDeleteRenderbuffers fn_glDeleteRenderbuffers #define glFramebufferRenderbuffer fn_glFramebufferRenderbuffer #define glGenRenderbuffers fn_glGenRenderbuffers #define glRenderbufferStorage fn_glRenderbufferStorage #define glFramebufferTexture fn_glFramebufferTexture #else #define GL_GLEXT_PROTOTYPES #include #include #endif namespace fn::gfx { // Load OpenGL 2.0+ function pointers. On Linux it's a no-op (symbols resolved // statically via GL_GLEXT_PROTOTYPES). On Windows it uses wglGetProcAddress; // the GL context must be current before calling. bool gl_loader_init(); } // namespace fn::gfx