Gunslinger is a header-only c99 framework for multimedia applications.
- Header-only: drag-drop into any project without any additional compiling required.
- All externals included in the framework itself.
- Simple API inspired by sokol headers.
- Provides core framework for quickly developing multimedia applications: Platform, Graphics, Audio layers.
- Provides custom utilities for math and generic data structures.
- Optional helper utilties are provided, such as OpenGL 2.0-style immediate-mode rendering, asset management system, physics util, and a data reflection utility.
- Supports a growing list of platforms:
Windows
,OSX
,Linux
,Android
, andHTML5
currently with plans to addUWP
,RPI
,IOS
. - Graphics pipeline follows an explicit rendering framework, making it easier to write for modern backends, such as
Vulkan
/DX12
/Metal
. - All core layers can be fully swapped out with custom user implementations.
- Large collection of examples for quickly getting started.
- An available project template for various platforms and build systems to get started with a blank gunslinger project.
- Official framework used for all Game Engineering YouTube videos.
- Official Documentation (Docsforge)
- Online Sample Repo
- Getting Started
- Containers
- Examples
- Platform: WIP
- Audio: WIP
- Graphics: WIP
- Math: WIP
- Utils: WIP
A simple c99 'Hello World' example using gunslinger:
#define GS_IMPL
#include <gs.h>
gs_app_desc_t gs_main(int32_t argc, char** argv)
{
return (gs_app_desc_t){0};
}
- Support Android/iOS/RPI/UWP backends
- Support Vulkan/Metal/DX12 backends
- Add support for more texture sampler types: 1D, 3D, Cube Maps, Arrays
- Material Asset utils
- Language Ports: (Python, JS, Rust, C#)
- Add platform-independent threading utils to framework
- MRT
- Job System Util
- Write more docs for github
- Hot-reload util
- Remove all externals from core framework
- Add more texture formats (including compressed)