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

41 lines
1.1 KiB
Markdown

# libsst-glapi
Thread-safe OpenGL 3.3 function loader with per-thread context management.
## Usage
```c
#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`.