You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Documentation/index.md
+54-11Lines changed: 54 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,28 +6,71 @@ Object oriented graphics framework for SDL3 and C.
6
6
7
7
## About
8
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.
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_gpu](https://libsdl.org), it provides a unified API for modern GPU programming with Metal, Vulkan, and Direct3D 12.
10
10
11
11
## Features
12
12
13
-
-**macOS, iOS, Windows, Linux & Android** cross-platform support via SDL3 (Metal, Direct3D 12, Vulkan)
14
-
-**RenderDevice** owns the swapchain — drive frames with a simple `beginFrame` / `endFrame` loop
-**Typed passes**: RenderPass, ComputePass, CopyPass with command-lifecycle validation
17
-
-**Framebuffer** with multiple render targets, depth, and MSAA with automatic resolve
18
-
-**Shaders** in every format SDL3 supports (SPIR-V, MSL, DXIL), loaded by name with automatic per-backend selection
19
-
-**Mathlib**: vector, matrix, and quaternion math for 3D graphics
13
+
-**Cross-platform** support for Android, iOS, macOS, Linux and Windows
14
+
-**RenderDevice** owns the swapchain — drive frames with a simple `beginFrame` / `endFrame` loop and an unambiguous order of operations
15
+
-**Resource objects** with automatic lifecycle — Buffer, Texture, Sampler, Shader, GraphicsPipeline and ComputePipeline initialize and tear themselves down
16
+
-**Typed passes**: RenderPass, ComputePass and CopyPass with command-lifecycle validation that catches mistakes upfront
17
+
-**Framebuffer** abstracts multiple render targets, depth, and MSAA with automatic resolve — convenience without forfeiting the low-level API
18
+
-**Shaders** in every format SDL3 supports — SPIR-V (Vulkan), MSL (Metal) and DXIL (D3D12) — loaded by name with automatic per-backend selection; author them in any language and cross-compile with [SDL_shadercross](https://github.com/libsdl-org/SDL_shadercross), or bring your own blobs
19
+
-**Mathlib** — vector, matrix, and quaternion math for 3D graphics
20
+
21
+
## tl;dr
22
+
23
+
The verbose, error-prone handling of a raw GPU API collapses into reference-counted objects and a handful of intuitive methods.
24
+
25
+
Uploading an image to the GPU is a single call — the staging buffer and copy pass are handled for you:
The `endFrame` method resolves the multisampled `Framebuffer` and presents to the swapchain for you. No manual resolve targets, no store-op bookkeeping, no presentation plumbing.
54
+
55
+
## Getting Started
56
+
57
+
Consult the @subpage install for dependencies, building, and linking.
20
58
21
59
## User Guide
22
60
23
-
Consult the @subpage guide [User Guide]to draw your first frame.
61
+
Consult the @subpage guide to draw your first frame — the render device, resource objects, framebuffers and MSAA, the typed passes, and shaders.
24
62
25
63
## Class Hierarchy
26
64
27
65
Browse the [Class Hierarchy](hierarchy.html) to navigate the full API.
28
66
29
-
## Examples
67
+
## Project Showcase
30
68
31
-

69
+
1.[Hello](Examples/Hello.c) renders a spinning, multisampled 3D cube.
70
+
1.[HelloCompute](Examples/HelloCompute.c) animates particles with a compute shader and draws them as points.
71
+
1.[ObjectivelyMVC](https://github.com/jdolan/ObjectivelyMVC) is a framework for modern game interfaces built on SDL3, Objectively and ObjectivelyGPU.
72
+
1.[Quetoo](https://github.com/jdolan/quetoo) is a free first-person shooter that uses Objectively, ObjectivelyGPU and ObjectivelyMVC extensively.
32
73
74
+

33
75

***Typed passes**: RenderPass, ComputePass, CopyPass with command-lifecycle validation
21
-
***Framebuffer** with multiple render targets, depth, and MSAA with automatic resolve
22
-
***Shaders** in every format SDL3 supports — SPIR-V (Vulkan), MSL (Metal), DXIL (D3D12) — loaded by name with automatic per-backend selection; author them in any language and cross-compile with [SDL_shadercross](https://github.com/libsdl-org/SDL_shadercross), or bring your own blobs
23
-
***Mathlib**: vector, matrix, and quaternion math for 3D graphics
24
-
25
-
The verbose, error-prone handle juggling of a raw GPU API collapses into reference-counted objects and a
26
-
handful of methods. A whole frame — acquire the swapchain, clear, draw a multisampled scene, resolve, and
27
-
present — is just this:
17
+
***Cross-platform** support for Android, iOS, macOS, Linux and Windows
18
+
***RenderDevice** owns the swapchain — drive frames with a simple `beginFrame` / `endFrame` loop and an unambiguous order of operations
19
+
***Resource objects** with automatic lifecycle — Buffer, Texture, Sampler, Shader, GraphicsPipeline and ComputePipeline initialize and tear themselves down
20
+
***Typed passes**: RenderPass, ComputePass and CopyPass with command-lifecycle validation that catches mistakes upfront
21
+
***Framebuffer** abstracts multiple render targets, depth, and MSAA with automatic resolve — convenience without forfeiting the low-level API
22
+
***Shaders** loaded by name, with the formats supported by your platform
23
+
***Mathlib** — vector, matrix, and quaternion math for 3D graphics
24
+
25
+
## tl;dr
26
+
The verbose, error-prone handling of a raw GPU API collapses into reference-counted objects and a
27
+
handful of intuitive methods.
28
+
29
+
Uploading an image to the GPU is a single call — the staging buffer and copy pass are handled for you:
0 commit comments