Files
fn_registry/cpp/functions/gfx/gl_loader.cpp
T
egutierrez 53402d84d5 docs(issues): marcar 0025 y 0026 como completados + WIP master
Wave 1 de parallel-fix-issues integrada a master:
- 0025: text_editor_cpp_core + file_watcher_cpp_core
- 0026: gl_texture_load_cpp_gfx (vendor: stb_image v2.30)

Ademas se commitea WIP previo de master que estaba sin commitear (cambios
en shaders_lab, dag_*, framework, tokens, kpi_card, gl_loader.md, etc.)
para dejar HEAD buildable.

Notas:
- Algunos deps del gallery (button.cpp, toolbar.cpp, modal_dialog.cpp...)
  siguen UNTRACKED — gating con FN_BUILD_GALLERY=ON (default OFF) para
  que master build (sin flag) no los necesite.
- Build OK con y sin flag. fn index registra 904 functions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 21:14:15 +02:00

113 lines
4.3 KiB
C++

#include "gl_loader.h"
#ifdef _WIN32
PFNGLATTACHSHADERPROC fn_glAttachShader = nullptr;
PFNGLBINDBUFFERPROC fn_glBindBuffer = nullptr;
PFNGLBINDFRAMEBUFFERPROC fn_glBindFramebuffer = nullptr;
PFNGLBINDVERTEXARRAYPROC fn_glBindVertexArray = nullptr;
PFNGLCOMPILESHADERPROC fn_glCompileShader = nullptr;
PFNGLCREATEPROGRAMPROC fn_glCreateProgram = nullptr;
PFNGLCREATESHADERPROC fn_glCreateShader = nullptr;
PFNGLDELETEBUFFERSPROC fn_glDeleteBuffers = nullptr;
PFNGLDELETEFRAMEBUFFERSPROC fn_glDeleteFramebuffers = nullptr;
PFNGLDELETEPROGRAMPROC fn_glDeleteProgram = nullptr;
PFNGLDELETESHADERPROC fn_glDeleteShader = nullptr;
PFNGLDELETEVERTEXARRAYSPROC fn_glDeleteVertexArrays = nullptr;
PFNGLFRAMEBUFFERTEXTURE2DPROC fn_glFramebufferTexture2D = nullptr;
PFNGLGENBUFFERSPROC fn_glGenBuffers = nullptr;
PFNGLGENFRAMEBUFFERSPROC fn_glGenFramebuffers = nullptr;
PFNGLGENVERTEXARRAYSPROC fn_glGenVertexArrays = nullptr;
PFNGLGETPROGRAMINFOLOGPROC fn_glGetProgramInfoLog = nullptr;
PFNGLGETPROGRAMIVPROC fn_glGetProgramiv = nullptr;
PFNGLGETSHADERINFOLOGPROC fn_glGetShaderInfoLog = nullptr;
PFNGLGETSHADERIVPROC fn_glGetShaderiv = nullptr;
PFNGLGETUNIFORMLOCATIONPROC fn_glGetUniformLocation = nullptr;
PFNGLLINKPROGRAMPROC fn_glLinkProgram = nullptr;
PFNGLSHADERSOURCEPROC fn_glShaderSource = nullptr;
PFNGLUNIFORM1FPROC fn_glUniform1f = nullptr;
PFNGLUNIFORM1IPROC fn_glUniform1i = nullptr;
PFNGLUNIFORM2FPROC fn_glUniform2f = nullptr;
PFNGLUNIFORM3FPROC fn_glUniform3f = nullptr;
PFNGLUNIFORM4FPROC fn_glUniform4f = nullptr;
PFNGLUNIFORM4FVPROC fn_glUniform4fv = nullptr;
PFNGLUSEPROGRAMPROC fn_glUseProgram = nullptr;
PFNGLACTIVETEXTUREPROC fn_glActiveTexture = nullptr;
PFNGLGENERATEMIPMAPPROC fn_glGenerateMipmap = nullptr;
PFNGLBUFFERDATAPROC fn_glBufferData = nullptr;
PFNGLDRAWARRAYSINSTANCEDPROC fn_glDrawArraysInstanced = nullptr;
PFNGLENABLEVERTEXATTRIBARRAYPROC fn_glEnableVertexAttribArray = nullptr;
PFNGLVERTEXATTRIBDIVISORPROC fn_glVertexAttribDivisor = nullptr;
PFNGLVERTEXATTRIBPOINTERPROC fn_glVertexAttribPointer = nullptr;
PFNGLBINDRENDERBUFFERPROC fn_glBindRenderbuffer = nullptr;
PFNGLDELETERENDERBUFFERSPROC fn_glDeleteRenderbuffers = nullptr;
PFNGLFRAMEBUFFERRENDERBUFFERPROC fn_glFramebufferRenderbuffer = nullptr;
PFNGLGENRENDERBUFFERSPROC fn_glGenRenderbuffers = nullptr;
PFNGLRENDERBUFFERSTORAGEPROC fn_glRenderbufferStorage = nullptr;
PFNGLFRAMEBUFFERTEXTUREPROC fn_glFramebufferTexture = nullptr;
namespace fn::gfx {
bool gl_loader_init() {
#define LOAD(name) \
fn_##name = (decltype(fn_##name))wglGetProcAddress(#name); \
if (!fn_##name) return false
LOAD(glAttachShader);
LOAD(glBindBuffer);
LOAD(glBindFramebuffer);
LOAD(glBindVertexArray);
LOAD(glCompileShader);
LOAD(glCreateProgram);
LOAD(glCreateShader);
LOAD(glDeleteBuffers);
LOAD(glDeleteFramebuffers);
LOAD(glDeleteProgram);
LOAD(glDeleteShader);
LOAD(glDeleteVertexArrays);
LOAD(glFramebufferTexture2D);
LOAD(glGenBuffers);
LOAD(glGenFramebuffers);
LOAD(glGenVertexArrays);
LOAD(glGetProgramInfoLog);
LOAD(glGetProgramiv);
LOAD(glGetShaderInfoLog);
LOAD(glGetShaderiv);
LOAD(glGetUniformLocation);
LOAD(glLinkProgram);
LOAD(glShaderSource);
LOAD(glUniform1f);
LOAD(glUniform1i);
LOAD(glUniform2f);
LOAD(glUniform3f);
LOAD(glUniform4f);
LOAD(glUniform4fv);
LOAD(glUseProgram);
LOAD(glActiveTexture);
LOAD(glGenerateMipmap);
LOAD(glBufferData);
LOAD(glDrawArraysInstanced);
LOAD(glEnableVertexAttribArray);
LOAD(glVertexAttribDivisor);
LOAD(glVertexAttribPointer);
LOAD(glBindRenderbuffer);
LOAD(glDeleteRenderbuffers);
LOAD(glFramebufferRenderbuffer);
LOAD(glGenRenderbuffers);
LOAD(glRenderbufferStorage);
LOAD(glFramebufferTexture);
#undef LOAD
return true;
}
} // namespace fn::gfx
#else
namespace fn::gfx {
bool gl_loader_init() { return true; }
} // namespace fn::gfx
#endif