Advanced Platform Awareness, Control, and Timing
(c) 2025-2026 Jacques Morel — MIT Licensed
Situation is a single-file, cross-platform C11 library providing unified, low-level access to windowing, graphics (OpenGL 4.6 / Vulkan 1.4), audio, input, filesystem, threading, and timing.
| Document | Description |
|---|---|
| Introduction | What Situation is, getting started, build configuration, language wrappers, FAQ |
| Architecture | Internal design, threading model, audio graph, GL/VK backend lifecycles |
| Compilation Guide | Application build reference (linking, flags, platforms, language wrappers) |
| Building the Library | Full reference for building situation itself (Makefile, targets, Vulkan SDK, shaderc) |
| SDK Reference | Primary technical reference manual |
| API Guide | All functions, structs, and enums with usage examples |
| What's New | Recent features and roadmap completions |
| Update Log | Full version history |
Build scripts live in build/ — quick-reference for all build targets. Code generation and binding tools live in tools/.
#define SITUATION_IMPLEMENTATION
#define SITUATION_USE_OPENGL
#include "situation.h"
int main(int argc, char** argv) {
SituationInitInfo cfg = { .window_width = 1280, .window_height = 720,
.window_title = "Hello Situation" };
if (SituationInit(argc, argv, &cfg) != SITUATION_SUCCESS) return -1;
while (!SituationWindowShouldClose()) {
SITUATION_BEGIN_FRAME();
if (SituationAcquireFrameCommandBuffer()) {
// record render commands here
SituationEndFrame();
}
}
SituationShutdown();
return 0;
}Build against the pre-built static lib — no need to recompile the library:
build\build_situation.bat static-opengl
build\build_examples.bat static-opengl hello_situationSee Introduction for the full getting-started walkthrough and Compilation Guide for all build targets.
MIT — see LICENSE.
