|
1 | | -ObjectivelyGPU {#index} |
2 | | -=============== |
| 1 | +ObjectivelyGPU |
| 2 | +============== |
| 3 | +Object oriented graphics framework for SDL3 and C. |
3 | 4 |
|
4 | | -[ObjectivelyGPU](https://github.com/jdolan/ObjectivelyGPU) is an object-oriented wrapper around [SDL3](https://libsdl.org)'s GPU API for [GNU C](https://www.gnu.org/software/gnu-c-manual/). It builds on [Objectively](https://github.com/jdolan/Objectively) to deliver a clean, idiomatic C API for modern GPU programming. |
| 5 | +Zlib license. |
| 6 | + |
| 7 | +## About |
| 8 | + |
| 9 | +[ObjectivelyGPU](https://github.com/jdolan/ObjectivelyGPU) is a cross-platform, object oriented graphics framework for the C programming language. Built on [Objectively](https://github.com/jdolan/Objectively) and [SDL3](https://libsdl.org)'s GPU API, it provides a clean, idiomatic C API for modern GPU programming across Metal, Vulkan, and Direct3D 12. |
5 | 10 |
|
6 | 11 | ## Features |
7 | 12 |
|
8 | | -- **RenderDevice** — device creation, buffer/texture/sampler allocation, and shader pipeline compilation |
9 | | -- **CommandBuffer** — render, compute, and copy command recording |
10 | | -- **RenderPass**, **ComputePass**, **CopyPass** — typed command encoder wrappers |
11 | | -- Shader compilation via [SDL_shadercross](https://github.com/libsdl-org/SDL_shadercross) (HLSL → SPIR-V / MSL) |
12 | | -- macOS and iOS (Metal), Windows (Direct3D 12), Linux (Vulkan) via SDL3 backends |
| 13 | +- **macOS, iOS, Windows, Linux & Android** cross-platform support via SDL3 (Metal, Direct3D 12, Vulkan) |
| 14 | +- **RenderDevice** with a `beginFrame` / `endFrame` loop over the swapchain |
| 15 | +- **Resource objects**: Buffer, Texture, Sampler, Shader, GraphicsPipeline, ComputePipeline |
| 16 | +- **Typed passes**: RenderPass, ComputePass, CopyPass with command-lifecycle validation |
| 17 | +- **Framebuffer** with multiple render targets, depth, and MSAA with automatic resolve |
| 18 | +- **Shaders** authored in GLSL and loaded via the Objectively Resource system |
| 19 | +- **Mathlib**: vector, matrix, and quaternion math for 3D graphics |
13 | 20 |
|
14 | | -## API |
| 21 | +## Class Hierarchy |
15 | 22 |
|
16 | | -Browse the [class hierarchy](hierarchy.html) to navigate the API. |
| 23 | +Browse the [class hierarchy](hierarchy.html) to navigate the full API. |
17 | 24 |
|
18 | | -## Building |
| 25 | +## Getting Started |
19 | 26 |
|
20 | 27 | ```sh |
21 | 28 | autoreconf -i |
22 | 29 | ./configure |
23 | 30 | make && sudo make install |
24 | 31 | ``` |
| 32 | + |
| 33 | +See the [Hello](https://github.com/jdolan/ObjectivelyGPU/blob/main/Examples/Hello.c) and [HelloCompute](https://github.com/jdolan/ObjectivelyGPU/blob/main/Examples/HelloCompute.c) examples to draw your first frame. |
| 34 | + |
| 35 | +## Examples |
| 36 | + |
| 37 | + |
| 38 | + |
| 39 | + |
0 commit comments