SBgl 0.1.0
A graphics framework in C99
Loading...
Searching...
No Matches
Window Setup

Initializing the SBgl context and creating a native window.

Initializing the Context

SBgl uses an explicit context for all operations.

#include <sbgl.h>
int main() {
sbgl_InitResult res = sbgl_Init(800, 600, "Application");
if (res.error != SBGL_SUCCESS) return 1;
sbgl_Context* ctx = res.ctx;
// ...
return 0;
}
int main(void)
Definition batch_main.c:14
API for the SiputBiru Graphics Library (SBgl).
sbgl_InitResult sbgl_Init(int w, int h, const char *title)
Initializes the engine and opens a window.
Definition sbgl_core.c:193
void sbgl_Shutdown(sbgl_Context *ctx)
Gracefully shuts down the engine and releases all resources.
Definition sbgl_core.c:204
@ SBGL_SUCCESS
Definition sbgl_types.h:215
Engine context.
Definition sbgl_types.h:268
Result structure for initialization.
Definition sbgl_types.h:339
sbgl_Context * ctx
Definition sbgl_types.h:340
sbgl_Result error
Definition sbgl_types.h:341

Initialization with Configuration

For applications requiring custom resource limits or validation settings, use sbgl_InitWithConfig():

sbgl_InitConfig config = {
.windowWidth = 1920,
.windowHeight = 1080,
.windowTitle = "Application",
.limits = {
.maxBuffers = 4096, // Maximum GPU buffers
.maxShaders = 512, // Maximum shader modules
.maxPipelines = 1024 // Maximum graphics/compute pipelines
},
.enableValidation = true // Enable Vulkan validation layers
};
if (res.error != SBGL_SUCCESS) return 1;
sbgl_Context* ctx = res.ctx;
sbgl_InitResult sbgl_InitWithConfig(const sbgl_InitConfig *config)
Initializes the engine and opens a window with explicit configuration.
Definition sbgl_core.c:112
Configuration for engine initialization.
Definition sbgl_types.h:308

Using Default Configuration

The sbgl_DefaultInitConfig macro provides sensible defaults that can be selectively overridden:

// Start with defaults, override only what is needed
config.windowWidth = 1920;
config.windowHeight = 1080;
config.limits.maxBuffers = 4096;
#define sbgl_DefaultInitConfig
Default initialization configuration values.
Definition sbgl_types.h:328
uint32_t windowWidth
Definition sbgl_types.h:309
sbgl_ResourceLimits limits
Definition sbgl_types.h:312
uint32_t windowHeight
Definition sbgl_types.h:310

Default Resource Limits

When using sbgl_Init() or sbgl_DefaultInitConfig, the following defaults apply:

Resource Default Minimum
Buffers 1024 64
Shaders 256 16
Pipelines 256 16

Limits below the minimum are automatically clamped to ensure stability.

The Main Loop

while (!sbgl_WindowShouldClose(ctx)) {
// Rendering operations
}
bool sbgl_WindowShouldClose(sbgl_Context *ctx)
Checks if the user or OS has requested to close the window.
Definition sbgl_core.c:238
void sbgl_EndDrawing(sbgl_Context *ctx)
Finalizes the current frame and presents it to the screen.
Definition sbgl_core.c:315
void sbgl_BeginDrawing(sbgl_Context *ctx)
Prepares the engine for a new frame of drawing.
Definition sbgl_core.c:262