4610bb4a99
- cpp/functions/gfx/uniform_parser: regex-based parser of @slider/@color/@toggle/@xy annotations (+ inline tests) - cpp/functions/gfx/uniform_panel: ImGui widgets + value store + glUniform* apply - shader_canvas: optional uniforms callback invoked per-frame - gl_loader: +glUniform1i/3f/4f - seed plasma: demo uniforms u_speed + u_color - rebuild Windows .exe Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
85 lines
3.0 KiB
C++
85 lines
3.0 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;
|
|
PFNGLUSEPROGRAMPROC fn_glUseProgram = 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(glUseProgram);
|
|
|
|
#undef LOAD
|
|
return true;
|
|
}
|
|
|
|
} // namespace fn::gfx
|
|
|
|
#else
|
|
|
|
namespace fn::gfx {
|
|
bool gl_loader_init() { return true; }
|
|
} // namespace fn::gfx
|
|
|
|
#endif
|