1.9 KiB
1.9 KiB
SDL3 Sample Project with Zig Bindings
A sample SDL3 application using Zig-native bindings instead of C imports.
Features
- SDL3 window initialization and management
- Zig-native API bindings vendored from sdl3bind
- Event loop with keyboard input handling
- Exits on pressing Escape key
- Basic rendering with color clear
- GPU-accelerated rendering sample
Samples
Main Sample (src/main.zig)
Basic SDL3 window with traditional renderer API:
zig build run
GPU Sample (src/gpu_sample.zig)
SDL3 GPU API sample that initializes a GPU device and clears the screen with a yellowish color:
zig build run-gpu
Note: The GPU sample requires SDL3 to be built with GPU backend support (Vulkan, Metal, or D3D12). If you see "No supported SDL_GPU backend found!", ensure you have the appropriate graphics drivers and SDL3 GPU support installed.
Structure
src/main.zig- Main application using Zig SDL3 bindings (traditional renderer)src/gpu_sample.zig- GPU API sample with render pass clearsdl3-zig/- Vendored Zig bindings for SDL3sdl3.zig- Main module that re-exports all SDL3 APIssdl3/- Individual API modules (init, video, events, render, gpu, etc.)sdl3/c.zig- C import wrapper for SDL3 headers
Dependencies
- SDL3 (castholm's Zig port) - v0.4.0+3.4.0
- SDL3 Zig bindings - official/release-3.4.0
Building
zig build
Running
# Run the main renderer sample
zig build run
# Run the GPU API sample
zig build run-gpu
Press Escape to exit the applications.
Notes
- Uses Zig 0.15.2 API
- The Zig bindings provide type-safe, Zig-friendly wrappers around SDL3's C API
- Opaque pointer types require
@ptrCastwhen crossing between binding and C types - All SDL3 functions are accessed through the
sdlimport (e.g.,sdl.init_fn(),sdl.video.createWindow()) - GPU sample uses SDL3's new GPU API for modern graphics rendering