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.