# learnVulkan **Repository Path**: wangyxli/learnVulkan ## Basic Information - **Project Name**: learnVulkan - **Description**: vulkan入门 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-24 - **Last Updated**: 2026-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vulkan 从零到精通实战教程 本项目是一套完整的 Vulkan C++ 实战教程,旨在帮助开发者从零开始掌握现代图形 API。教程采用理论与实践结合的方式,每章配有详细的文档说明和可运行的代码示例。 ## 项目结构 ``` learnVulkan/ ├── docs/ # 知识讲解文档 │ ├── 01_introduction/ # Vulkan 哲学与设计思想 │ ├── 02_instance_and_physical_device/ # Instance 与 Physical Device │ ├── 03_logical_device_and_queues/ # Logical Device 与 Queues │ ├── 04_swapchain/ # Swapchain 与呈现系统 │ ├── 05_graphics_pipeline/ # 图形管线详解 │ ├── 06_resource_management/# 资源与内存管理 │ ├── 07_synchronization/ # 同步机制(核心难点) │ ├── 08_command_buffers/ # 命令缓冲与录制 │ ├── 09_advanced_topics/ # 高级主题 │ └── 10_examples_overview/ # 示例概览与编译指南 │ └── examples/ # 代码示例 ├── 01_basic_initialization/ # 基础初始化 ├── 02_draw_triangle/ # 绘制三角形 ├── 03_uniform_buffer/ # Uniform Buffer ├── 04_texture_mapping/ # 纹理映射 ├── 05_depth_testing/ # 深度测试 └── 06_multi_frame_rendering/ # 多帧渲染与同步 ``` ## 教程内容 ### 文档章节 | 章节 | 主题 | 描述 | |------|------|------| | 01 | Vulkan 哲学与设计思想 | 理解显式 vs 隐式设计理念 | | 02 | Instance 与 Physical Device | 设备枚举与选择策略 | | 03 | Logical Device 与 Queues | 逻辑设备创建与队列管理 | | 04 | Swapchain 与呈现系统 | 交换链配置与双缓冲/三缓冲 | | 05 | 图形管线详解 | 着色器、管线状态与渲染流程 | | 06 | 资源与内存管理 | Buffer、Image 与内存分配 | | 07 | 同步机制 | 信号量、栅栏与管线屏障 | | 08 | 命令缓冲与录制 | 命令池、命令缓冲与多线程 | | 09 | 高级主题 | 动态渲染、推送常量、间接绘制 | | 10 | 示例概览与编译指南 | 项目编译与运行指南 | ### 示例概览 1. **基础初始化** - 创建 Vulkan 实例、物理设备、逻辑设备和交换链 2. **绘制三角形** - 创建图形管线并绘制第一个几何图形 3. **Uniform Buffer** - 传递动态Uniform数据到着色器 4. **纹理映射** - 加载并显示纹理图片 5. **深度测试** - 实现深度缓冲和正确遮挡关系 6. **多帧渲染与同步** - 实现多帧并行渲染和同步机制 ## 环境要求 ### Windows - [Vulkan SDK](https://vulkan.lunarg.com/) - Visual Studio 2017 或更高版本 - CMake 3.16+ ### Linux (Ubuntu/Debian) ```bash # 安装 Vulkan SDK # 安装 GLFW sudo apt-get install libglfw3-dev # 安装 GLM sudo apt-get install libglm-dev ``` ### macOS - [Vulkan SDK](https://vulkan.lunarg.com/) - Homebrew 安装的 GLFW 和 GLM ## 编译指南 ### 步骤 1: 克隆项目 ```bash git clone https://gitee.com/wangyxli/learnVulkan.git cd learnVulkan ``` ### 步骤 2: 创建构建目录 ```bash mkdir build && cd build ``` ### 步骤 3: 配置 CMake ```bash cmake .. ``` ### 步骤 4: 编译 ```bash cmake --build . ``` ### 步骤 5: 运行示例 编译完成后,在各示例目录下运行生成的可执行文件。 > **注意**: 运行前需要将着色器文件复制到可执行文件所在目录。 ## 着色器编译 示例项目使用 GLSL 着色器,需要编译为 SPIR-V 格式: ```bash # 使用 glslc 编译 glslc shader.vert -o shader.vert.spv glslc shader.frag -o shader.frag.spv ``` ## 学习建议 1. **循序渐进**: 按章节顺序学习,每章配合对应示例实践 2. **动手实践**: 光看文档不够,需要实际编写代码并调试 3. **重视同步**: 第七章同步机制是 Vulkan 的核心难点,需重点理解 4. **使用验证层**: 开发时开启验证层,有助于发现潜在问题 ## 许可证 本项目仅供学习交流使用。 ## 相关资源 - [Vulkan 官方文档](https://www.khronos.org/vulkan/) - [Vulkan Tutorial](https://vulkan-tutorial.com/) - [Sascha Willems 示例](https://github.com/SaschaWillems/Vulkan)