Welcome to the "Building a Simple Engine" tutorial series! This series marks a transition from the foundational Vulkan concepts covered in the previous chapters to a more structured approach focused on building a reusable rendering engine.
A New Learning Approach
While the previous tutorial series focused on introducing individual Vulkan concepts step by step, this series takes a different approach:
This series targets readers who have completed the Vulkan Tutorial and feel comfortable with the fundamentals. We’ll emphasize architectural concepts and design patterns over exhaustive API permutations, so you develop an engine mindset rather than a collection of snippets. Expect to do more independent work: fill in smaller gaps, experiment, and lean on the Vulkan Guide, Samples, and Specification as primary references. If a topic feels too advanced, revisit the original tutorial and return when ready.
What to Expect
The "Building a Simple Engine" series is designed as a starting point for your journey into engine development, not a finishing point. We’ll cover:
-
Engine Architecture - How to structure your code for flexibility, maintainability, and extensibility.
-
Resource Management - More sophisticated approaches to handling models, textures, and other assets.
-
Rendering Techniques - Implementation of modern rendering approaches within an engine framework.
-
Performance Considerations - How to design your engine with performance in mind.
-
Publication Considerations - How to prepare your application for distribution in a professional environment, including packaging, deployment, and platform-specific considerations.
Throughout this series, we encourage you to experiment, extend the provided examples, and even challenge some of our design decisions. The best way to learn engine development is by doing, and sometimes by making (and learning from) mistakes.
Throughout our engine implementation, we’re using vk::raii dynamic rendering and C20 modules. The vk::raii namespace provides Resource Acquisition Is Initialization (RAII) wrappers for Vulkan objects, which helps with resource management and makes the code cleaner. Dynamic rendering simplifies the rendering process by eliminating the need for explicit render passes and framebuffers. C20 modules improve code organization, compilation times, and encapsulation compared to traditional header files.
Is this a new series? I don’t remember seeing this before.