Files
libsst/libsst-glapi/README.md
James Russell 71230f918f Add module READMEs, .gitignore, and remove Bin/ from tracking
Add README.md for each library module documenting API, platform
backends, and usage. Add .gitignore for build artifacts. Remove
pre-built binaries from version control.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:27:55 -05:00

1.1 KiB

libsst-glapi

Thread-safe OpenGL 3.3 function loader with per-thread context management.

Usage

#include <SST/SST_GLAPI.h>

SST_GLAPI_InitForThread(NULL);  // NULL = platform default library

// Standard GL calls work via macros:
glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(GL_TRIANGLES, 0, 3);

SST_GLAPI_ShutdownForThread();

The macros in SST_GLAPIMacros.h dispatch through a thread-local SST_GLAPI struct containing 334 function pointers.

API

  • SST_GLAPI_InitForThread(libName) -- load GL library, resolve all symbols
  • SST_GLAPI_ShutdownForThread() -- release resources
  • SST_GLAPI_GetThreadGLAPI() -- get current thread's function table
  • SST_GLAPI_CopyForThread(api) -- install a custom function table

Platform backends

Platform Library Symbol resolution
Windows opengl32.dll wglGetProcAddress + GetProcAddress
Linux/POSIX libGL.so.1 glXGetProcAddressARB
macOS OpenGL.framework dlsym

Code generation

parsegl.c reads gl33.txt and generates SST_GLAPIStruct.h, SST_GLAPIStruct.c, and SST_GLAPIMacros.h.