Skip to content

Commit 2963e96

Browse files
committed
change readme
1 parent 8c4c938 commit 2963e96

File tree

5 files changed

+60
-50
lines changed

5 files changed

+60
-50
lines changed

README.md

Lines changed: 29 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,12 @@
3535

3636
> 如有错误,请提交Issue或PR。
3737
38-
### 教程简介
38+
### 内容简介
3939

40-
本教程是 Vulkan 的入门教程,将系统讲解 Vulkan 图形与计算 API 的基础知识与实际应用。
40+
本文档是 Vulkan 的入门教程,将系统讲解 Vulkan 图形与计算 API 的基础知识与实际应用。
4141

4242
教程将使用 C++ 编写代码,借助 Vulkan-Hpp 封装,充分利用 RAII 等现代 C++ 特性。
4343

44-
> 注:Vulkan-Hpp 是 Vulkan SDK 的官方组成部分,非第三方库。
45-
46-
**教程大致内容如下:**
47-
48-
1. 介绍基础概念
49-
2. 配置开发环境
50-
3. 绘制第一个三角形
51-
4. 扩展基础功能
52-
5344
### 项目结构
5445

5546
- `src` 存放C++完整代码
@@ -62,50 +53,46 @@
6253
- `res` 其他资源
6354
- `codes` 每一节的代码和差异文件。
6455

56+
## 静态站点构建
6557

66-
### 代码说明
67-
68-
教程将使用 C++ 编写代码,采用C++20标准,并使用以下工具链:
69-
70-
- [Vulkan SDK](https://lunarg.com/vulkan-sdk/)
71-
- [GLM](http://glm.g-truc.net/) 线性代数库
72-
- [GLFW](http://www.glfw.org/) 窗口库
73-
- [CMake](https://cmake.org/) 构建系统
74-
- [vcpkg](https://vcpkg.io/) 依赖管理
75-
76-
正如教程名,我们会使用 Vulkan SDK 为C++提供的 `vulkan-hpp``raii` 封装,它提供了更现代的C++接口。
77-
78-
79-
虽然 `vulkan-hpp` 提供了模块支持,但是我们还需要使用 `glfw3` 库和 `glm` 库,将它们模块化是比较繁琐的,
80-
这超出了本教程的范围,因此不使用C++20的模块功能。
81-
82-
> C++23 的标准库模块与标准库头文件似乎是冲突的,这很可能显著延缓C++社区模块化的进度
83-
84-
`CMake` 用于项目构建,实现跨平台的项目,但要求读者了解CMake基础使用。
85-
86-
`Vcpkg` 用于管理第三方库,主要用于安装 `glfw3``glm`,这非常简单。
87-
88-
### 其他说明
58+
### 安装构建依赖
8959

90-
Vulkan SDK本身由C编写,这带来更好的跨语言能力,可以其他语言调用C接口。
60+
项目使用 material-mkdocs 构建,还需要 pymdownx 扩展。请使用 pip 或 conda 安装下面的两个库:
9161

92-
你或许更喜欢C风格底层接口,或使用Rust:
62+
pip:
9363

94-
- 基于底层C接口的C++教程:[Vulkan-tutorial](https://vulkan-tutorial.com/)
64+
```shell
65+
pip install mkdocs-material
66+
pip install pygments
67+
```
9568

96-
- 基于Vulkano封装的Rust教程 [Vulkan-tutorial-rs](https://github.com/bwasty/vulkan-tutorial-rs)
69+
conda(请先选择并激活合适的虚拟环境):
9770

71+
```shell
72+
conda install conda-forge::mkdocs-material
73+
conda install conda-forge::pygments
74+
```
9875

76+
### 生成静态网页资源
9977

100-
### 项目参考资料
78+
首先将仓库内容克隆到本地:
10179

102-
Vulkan-hpp文档 [vulkan-hpp](https://github.com/KhronosGroup/Vulkan-Hpp)
80+
```shell
81+
git clone https://github.com/Mysvac/vulkan-hpp-tutorial.git
82+
cd ./vulkan-hpp-tutorial
83+
```
10384

104-
Vulkan英文教程 [Vulkan-Tutorial](https://github.com/Overv/VulkanTutorial)
85+
可以用下面的命令在本地部署临时站点,用于调试或预览:(使用 conda 时记得激活虚拟环境)
10586

106-
Vulkan中文教程 [Vulkan-Tutorial](https://tutorial.vulkan.net.cn/Introduction)
87+
```shell
88+
mkdocs serve
89+
```
10790

91+
或者使用下面的命令生成静态文件:
10892

93+
```shell
94+
mkdocs build
95+
```
10996

11097
</div>
11198

docs/index.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## **教程简介**
44

5-
本教程是 Vulkan 的入门教程,将系统讲解 Vulkan 图形与计算 API 的基础知识与实际应用。
5+
本文档是 Vulkan 的入门教程,将系统讲解 Vulkan 图形与计算 API 的基础知识与实际应用。
66

77
教程将使用 C++ 编写代码,借助 Vulkan-Hpp 封装,充分利用 RAII 等现代 C++ 特性。
88

@@ -14,11 +14,12 @@
1414
2. 配置开发环境
1515
3. 绘制第一个三角形
1616
4. 扩展基础功能
17+
5. 介绍进阶功能
1718

1819

1920
## **代码说明**
2021

21-
教程将使用 C++ 编写代码,采用C++20标准,并使用以下工具链
22+
教程将使用 C++ 编写代码,采用C++20标准,主要使用以下工具链
2223

2324
- [Vulkan SDK](https://lunarg.com/vulkan-sdk/)
2425
- [GLM](http://glm.g-truc.net/) 线性代数库
@@ -31,17 +32,17 @@
3132
虽然 `vulkan-hpp` 提供了模块支持,但是我们还需要使用 `glfw3` 库和 `glm` 库,将它们模块化是比较繁琐的,
3233
这超出了本教程的范围,因此不使用C++20的模块功能。
3334

34-
> C++23 的标准库模块与标准库头文件似乎是冲突的,这很可能显著延缓C++社区模块化的进度
35+
> 在后续的扩展章节中可能会尝试启用模块,但在前面的基础章节中不会使用。
3536
36-
`CMake` 用于项目构建,实现跨平台的项目,但要求读者了解CMake基础使用
37+
`CMake` 用于项目构建,实现跨平台的项目配置,但要求读者了解 CMake 的基础使用
3738

38-
`Vcpkg` 用于管理第三方库,主要用于安装 `glfw3``glm`,这非常简单。
39+
`Vcpkg` 用于管理第三方库,主要用于安装 `glfw3``glm` 等依赖,这非常简单。
3940

4041
## **其他说明**
4142

42-
Vulkan SDK本身由C编写,这带来更好的跨语言能力,可以其他语言调用C接口
43+
Vulkan SDK本身由C编写,这带来更好的跨语言能力,可以使用其他语言调用C接口
4344

44-
你或许更喜欢C风格底层接口,或使用Rust:
45+
你或许更喜欢C风格的底层接口,或使用Rust:
4546

4647
- 基于底层C接口的C++教程:[Vulkan-tutorial](https://vulkan-tutorial.com/)
4748

@@ -57,3 +58,4 @@ Vulkan英文教程 [Vulkan-Tutorial](https://github.com/Overv/VulkanTutorial)
5758

5859
Vulkan中文教程 [Vulkan-Tutorial](https://tutorial.vulkan.net.cn/Introduction)
5960

61+
> 如果觉得内容尚可,请给Github仓库点个 Star ,谢谢喵。

docs/md/00/00_intro.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ Vulkan 是 [Khronos Group](https://www.khronos.org/) 推出的**现代图形与
8080

8181
12. 现在机器人终于可以画画了,我们要为他准备一个画架,用来放画纸。这个画架就是帧缓冲 `VkFrameBuffer` ,一帧代指一副图像。
8282

83-
13. 我们还要为机器人设计一个房子,房子里放着画笔、颜料等工具,还有一台用于清洗(重置)画纸的机器。这个房子就是渲染通道 `VkRenderPass`而画笔和机器等工具就是附件 `Attachments`
83+
13. 我们还要为机器人设计一个房子,房子里放着画笔、颜料等工具,还有一台用于清洗(重置)画纸的机器。这个房子就是渲染通道 `VkRenderPass`而画笔等工具就是附件 `Attachments`
8484

8585
14. 当画作变得更加复杂,我们可以在一个房子里放多个小房间,每个房间干不同的事情,这些小房间就是子通道 `VkSubpass`
8686

docs/md/03/30_movecamera.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# **移动摄像头**
2+
3+
我们后续还会载入各种各样的几何体,不可能每次都手动调整模型大小或计算摄像头合适位置。
4+
所以在开始进阶内容之前,我们先做一件有趣的事情,那就是获取外设输入并实时移动摄像头位置与角度。
5+
6+
GLFW 库提供了获取键盘输入的函数封装,我们可以使用它并在 `updateUniformBuffer` 函数中更新MVP变换。
7+
8+
> 注意这实际上并非 Vulkan 自身的内容,但它可以让我们后续的视频效果更加有趣!
9+
10+
## **获取用户输入**
11+
12+
// TODO
13+
14+
## **更改MVP变换**
15+
16+
// TODO
17+
18+
## **测试**
19+
20+
// TODO

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,5 @@ nav:
7373
- 加载模型: md/03/00_loadmodel.md
7474
- 生成Mipmaps: md/03/10_mipmaps.md
7575
- 多重采样: md/03/20_multisample.md
76+
- 移动摄像机: md/03/30_movecamera.md
7677
- 隐私政策: policy.md

0 commit comments

Comments
 (0)