# learn-vulkan **Repository Path**: Ruemo/learn-vulkan ## Basic Information - **Project Name**: learn-vulkan - **Description**: Vulkan API学习 - **Primary Language**: C++ - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2024-10-24 - **Last Updated**: 2026-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: Vulkan ## README # Vulkan 学习项目 通过本项目中包含的Vulkan参考书示例代码和现代C++教程,以相对平缓的学习曲线完成Vulkan入门到进阶。 **发行版中的epub文件仅供学习用途!** --- ## 目录结构 ``` learn-vulkan/ ├── vulkan-book/ # 《Vulkan开发实战详解》各章节(149个子项目) ├── modern-vulkan/ # 现代C++ Vulkan教程 ep01-ep13(推荐) ├── refactored/ # 重构版项目(Chapter13-04-refactored、Chapter16-02-refactored) ├── textures/ # 共享纹理资源 ├── models/ # 共享模型资源 ├── include/ # 共享头文件(imgui、nlohmann/json、stb_image 等) ├── dependencies/ # 第三方库子模块(glfw、glm、glslang、SDL2、SDL2_mixer) ├── doc/ # 架构设计文档 ├── 构建指引.md # 双平台构建命令、常见报错及解决方案 ├── CLAUDE.md # AI辅助开发指引 ├── config.json # GPU配置文件 └── CMakeLists.txt # 根CMake配置(按需取消注释 add_subdirectory) ``` ## 快速开始 ### 1. 下载项目依赖 由于项目包含大量模型和纹理文件,请先下载并解压到项目根目录: - **百度网盘**: [Vulkan项目资产](https://pan.baidu.com/s/1ZTCl9EZRfZaZVV0db67uYg?pwd=1111) ### 2. 初始化子模块 ```bash git submodule update --init --recursive ``` ### 3. 构建与运行 详细步骤请查阅 [构建指引.md](构建指引.md)。 ```bash # Windows (MinGW) 示例 cmake -S . -B build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release mingw32-make Chapter01-01 -C build cd vulkan-book/Chapter01-01 && ./Chapter01-01.exe ``` ## 项目系列 | 系列 | 路径 | 说明 | |------|------|------| | **ep 系列** | `modern-vulkan/ep*` | 现代C++20教程,推荐初学者从 ep01 开始 | | **Chapter 系列** | `vulkan-book/Chapter*` | 《Vulkan开发实战详解》随书代码,实用导向 | | **重构版** | `refactored/` | 展示传统架构向现代C++的改进 | ## 文档索引 | 文档 | 说明 | |------|------| | [构建指引.md](构建指引.md) | 双平台构建命令、常见报错及解决方案 | | [doc/项目架构设计.md](doc/项目架构设计.md) | 项目架构设计、新旧架构对比分析 | | [doc/学习路径.md](doc/学习路径.md) | 学习路径建议、Q&A、AI辅助学习 | | [doc/现代cppVulkan开发架构设计文档.md](doc/现代cppVulkan开发架构设计文档.md) | ep 系列架构设计详解 | | [doc/《Vulkan开发实战详解》架构说明.md](doc/《Vulkan开发实战详解》架构说明.md) | Chapter 系列架构说明 | ## 开发环境 | 依赖 | 版本 | |------|------| | C++ 标准 | C++20 | | Vulkan SDK | 1.3.290.0 | | GLFW | 3.4 | | glslang | 1.3.290.0 | | GLM | VulkanSDK 内置 | | 编译器 | MSVC / MinGW GCC / Apple Clang | ## 后记 1. 为了让书中使用glslang将glsl编译成spir-v的代码可用。使用SDK中的头和库文件编译后一直报错找不到符号,折腾了三四天翻了几十篇博客才搞定依赖并解决glsl编译成spirV代码 2. 报错`0xC0000374`:堆栈溢出(Stack Overflow),可能是ObjObject::~ObjObject()中的`delete vdata;`而不是`delete[] vdata;`造成的 3. 《实战详解》里这么多有价值的代码不能运行我真是醉了 (눈‸눈) ![德莉莎](./ReadmeAssets/德莉莎.jpg)