How I learned Vulkan and wrote a small game engine with it (2024)
Vulkan’s Complexity and “Middle-Level” API Gap
- Many commenters find Vulkan miserable, unintuitive, and joy-draining, better suited to low‑level “chip abstraction” than to typical app/game developers.
- Several argue only a small subset of engine/AAA developers truly need Vulkan/DX12-level control; most would be better served by a higher-level API.
- There is a perceived missing “middle” between big engines (Unity/Unreal) and low‑level APIs: something as simple as SDL for 2D, but for 3D.
OpenGL and Older APIs
- OpenGL is widely described as that missing middle: easy “draw a triangle” entry, good for learning 3D concepts without caring about buffers, descriptors, etc.
- Some insist OpenGL is still fine and highly compatible (especially off-Apple), and that its “death” is overstated; others note its stagnation, lack of modern features (compute, bindless), and Apple’s deprecation.
- A few recommend modern OpenGL with Direct State Access, or Direct3D 9/10/11, as much more pleasant than Vulkan.
Alternatives: WebGPU, wgpu, SDL GPU, Others
- WebGPU (and Rust’s wgpu) is repeatedly cited as a good modern, cross‑platform middle ground: similar concepts to Vulkan but more constrained and approachable.
- wgpu can be used from non‑Rust languages via C/C++ bindings; Google’s Dawn is mentioned as another implementation.
- SDL3’s GPU API tries to be a cross‑backend abstraction over Vulkan/others; some like it as a learning step, others criticize its rigidity, shader toolchain pain (especially for Apple/Metal), and lowest-common-denominator limits.
- Other suggestions: Raylib, BGFX, XNA-style reimplementations (e.g., FNA) for a comfortable abstraction layer.
Learning Paths and Resources
- Recommended approach: start with a “batteries included” framework or OpenGL/WebGL, then maybe Direct3D11, then Vulkan once core concepts (shaders, pipelines, projection, buffers) are internalized.
- Several point to software renderers and ray tracing tutorials as fun, educational ways to learn the fundamentals without API complexity.
Ecosystem, Apple, and Engine Choices
- Apple’s deprecation of OpenGL and SceneKit and push toward Metal/RealityKit is criticized; some lament the loss of a truly universal graphics API.
- There’s speculation that the rise of very low‑level APIs plus engine complexity contributes to reliance on big engines, but others say editors, tooling, and cheap labor are the bigger drivers.
Meta: Hobby Engines and Terminology
- Multiple commenters express enthusiasm for hobby engine development as a rewarding long‑term pursuit; Minecraft‑like voxel engines are framed by some as a “hello world” for voxel rendering.
- Minor side discussion clarifies “bikeshedding” vs feature creep vs yak shaving.