Skip to content

Commit

Permalink
Synchronize with upstream (#96)
Browse files Browse the repository at this point in the history
  • Loading branch information
chuigda authored Sep 9, 2024
1 parent 3385bcc commit 3ab48bd
Show file tree
Hide file tree
Showing 75 changed files with 1,226 additions and 1,007 deletions.
8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

publish = false

edition = "2018"
edition = "2021"

name = "tutorial"
authors = ["Kyle Mayes <kyle@mayeses.com>"]
Expand All @@ -20,11 +20,11 @@ anyhow = "1"
log = "0.4"
cgmath = "0.18"
png = "0.17"
pretty_env_logger = "0.4"
pretty_env_logger = "0.5"
thiserror = "1"
tobj = { version = "3", features = ["log"] }
vulkanalia = { version = "=0.22.0", features = ["libloading", "provisional", "window"] }
winit = "0.28"
vulkanalia = { version = "=0.25.0", features = ["libloading", "provisional", "window"] }
winit = "0.29"

[[bin]]

Expand Down
2 changes: 1 addition & 1 deletion book/preprocessor/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ anyhow = "1"
clap = "2"
log = "0.4"
mdbook = { version = "=0.4.21", default-features = false }
pretty_env_logger = "0.4"
pretty_env_logger = "0.5"
pulldown-cmark = "0.8"
pulldown-cmark-to-cmark = "6"
serde_json = "1"
Expand Down
2 changes: 1 addition & 1 deletion book/preprocessor/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ use pulldown_cmark_to_cmark::cmark;
/// The Vulkan API Registry index.
const INDEX: &str = include_str!("../../../index.txt");
/// The version of `vulkanalia` used by the tutorial.
const VERSION: &str = "0.22.0";
const VERSION: &str = "0.25.0";

/// The number of documentation link replacements made.
static REPLACEMENTS: AtomicUsize = AtomicUsize::new(0);
Expand Down
2 changes: 1 addition & 1 deletion book/src/conclusion.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/conclusion.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
一路千辛万苦,我们终于有了一个基本的 Vulkan 程序。你现在已经掌握了 Vulkan 的基本原理,可以开始探索更多的特性了,比如:
* 实例化渲染
Expand Down
30 changes: 19 additions & 11 deletions book/src/development_environment.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/development_environment.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
在这个章节中,我们将会安装 Vulkan SDK 并搭建开发 Vulkan 应用所需的环境。此教程假设你已经有一个搭建好的 Rust(1.51+)开发环境。
在这个章节中,我们将会安装 Vulkan SDK 并搭建开发 Vulkan 应用所需的环境。此教程假设你已经有一个搭建好的 Rust(1.70+)开发环境。

## Cargo 项目

Expand All @@ -22,11 +22,11 @@ log = "0.4"
cgmath = "0.18"
nalgebra-glm = "0.18"
png = "0.17"
pretty_env_logger = "0.4"
pretty_env_logger = "0.5"
thiserror = "1"
tobj = { version = "3", features = ["log"] }
vulkanalia = { version = "=0.22.0", features = ["libloading", "provisional", "window"] }
winit = "0.28"
vulkanalia = { version = "=0.25.0", features = ["libloading", "provisional", "window"] }
winit = "0.29"
```

* `anyhow` &ndash; 用于简单的错误处理
Expand All @@ -35,7 +35,7 @@ winit = "0.28"
* `png` &ndash; 用于将 PNG 图片文件加载到纹理
* `pretty_env_logger` &ndash; 用于打印日志到控制台
* `thiserror` &ndash; 用于在自定义错误类型时减少样板代码
* `tobj` &ndash; 用于加载 [Wavefront .obj 格式](https:/en.wikipedia.org/wiki/Wavefront_.obj_file) 的 3D 模型
* `tobj` &ndash; 用于加载 [Wavefront .obj 格式](https://en.wikipedia.org/wiki/Wavefront_.obj_file) 的 3D 模型
* `vulkanalia` &ndash; 用于调用 Vulkan API
* `winit` &ndash; 用于创建将进行渲染的窗口

Expand Down Expand Up @@ -75,16 +75,24 @@ SDK 能在 [LunarG 网站](https://vulkan.lunarg.com/)下载。创建账户不

如果你收到了一条错误信息,那你需要确保你的显卡驱动是最新的,包含 Vulkan 运行时,并且你的显卡支持 Vulkan。主流品牌的驱动下载链接详见[介绍章节](introduction.html)

### macOS
### MacOS

以下指引将假设你在使用 [Homebrew 包管理器](https://brew.sh/)。并且注意你需要 macOS 10.11 或更新的版本。你的设备也需要支持 [Metal API](https://en.wikipedia.org/wiki/Metal_(API)#Supported_GPUs)

SDK 能在 [LunarG 网站](https://vulkan.lunarg.com/) 下载。创建账户不是必须的,但它会给你阅读一些或许对你有用的额外文档的权限。
SDK 可在 [LunarG 网站](https://vulkan.lunarg.com/) 下载。创建账户不是必须的,但它会给你阅读一些或许对你有用的额外文档的权限。

![](./images/vulkan_sdk_download_buttons.png)

macOS 版本的 SDK 在内部使用了 [MoltenVK](https://moltengl.com/)。Vulkan 在 macOS 上没有原生支持,所以 MoltenVK 会作为中间层把 Vulkan API 的调用翻译至苹果的 Metal 图形框架。这样你就可以享受到苹果的 Metal 框架在调试与性能上的优点。
MacOS 版本的 SDK 在内部使用了 [MoltenVK](https://moltengl.com/)。Vulkan 在 MacOS 上没有原生支持,所以 MoltenVK 会作为中间层把 Vulkan API 的调用翻译至苹果的 Metal 图形框架。这样你就可以享受到苹果的 Metal 框架在调试与性能上的优点。

下载完成之后,将其解压到你自己选择的文件夹。在解压后的文件夹内,你可以在 `Applications` 文件夹中找到一些使用 SDK 运行的示例应用的可执行文件。运行 `vkcube` 示例应用,你会看到这个画面:

![](./images/cube_demo_mac.png)

#### 环境配置

当在 Vulkan SDK 目录以外的地方运行 Vulkan 应用程序时,你可能会需要运行由 Vulkan SDK 提供的 `setup-env.sh` 脚本,以避免找不到 Vulkan 库(例如 `libvulkan.dylib`)导致的问题。如果你把 Vulkan SDK 安装到了默认位置,脚本应该可以在如下目录中找到:`~/VulkanSDK/1.3.280.1/setup-env.sh`(用你实际安装的版本号替换 `1.3.280.1` 以匹配你的 Vulkan 安装)。

你也可以把这个脚本添加到你 Shell 的启动脚本中,这样它就能自动运行了。例如你可以在 `~/.zshrc` 文件中添加这样一行:

```
source ~/VulkanSDK/1.3.280.1/setup-env.sh
```
2 changes: 1 addition & 1 deletion book/src/drawing/command_buffers.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/drawing/command_buffers.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
**本章代码:**[main.rs](https://github.com/chuigda/Vulkan-Tutorial-Rust-CN/tree/master/src/14_command_buffers.rs)

Expand Down
2 changes: 1 addition & 1 deletion book/src/drawing/framebuffers.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/drawing/framebuffers.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
**本章代码:**[main.rs](https://github.com/chuigda/Vulkan-Tutorial-Rust-CN/tree/master/src/13_framebuffers.rs)

Expand Down
2 changes: 1 addition & 1 deletion book/src/drawing/rendering_and_presentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/drawing/rendering_and_presentation.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
**本章代码:**[main.rs](https://github.com/chuigda/Vulkan-Tutorial-Rust-CN/tree/master/src/15_hello_triangle.rs)

Expand Down
4 changes: 2 additions & 2 deletions book/src/dynamic/push_constants.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/dynamic/push_constants.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
> <span style="display: flex; justify-content: center; margin-bottom: 16px"><img src="../images/i_have_no_idea_what_im_doing.jpg" width="256"></span>前面没有这个声明的章节都是直接从 <https://github.com/Overv/VulkanTutorial> 改编而来。<br/><br/>这一章和后面的章节都是原创,作者并不是 Vulkan 的专家。作者尽力保持了权威的语气,但是这些章节应该被视为一个 Vulkan 初学者的“尽力而为”。<br/><br/>如果你有问题、建议或者修正,请[提交 issue](https://github.com/KyleMayes/vulkanalia/issues)
Expand Down Expand Up @@ -124,7 +124,7 @@ let model = Mat4::from_axis_angle(
Deg(0.0)
);
let model_bytes = &*std::slice::from_raw_parts(
let model_bytes = std::slice::from_raw_parts(
&model as *const Mat4 as *const u8,
size_of::<Mat4>()
);
Expand Down
2 changes: 1 addition & 1 deletion book/src/dynamic/recycling_command_buffers.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/dynamic/recycling_command_buffers.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
> <span style="display: flex; justify-content: center; margin-bottom: 16px"><img src="../images/i_have_no_idea_what_im_doing.jpg" width="256"></span>前面没有这个声明的章节都是直接从 <https://github.com/Overv/VulkanTutorial> 改编而来。<br/><br/>这一章和后面的章节都是原创,作者并不是 Vulkan 的专家。作者尽力保持了权威的语气,但是这些章节应该被视为一个 Vulkan 初学者的“尽力而为”。<br/><br/>如果你有问题、建议或者修正,请[提交 issue](https://github.com/KyleMayes/vulkanalia/issues)
Expand Down
17 changes: 10 additions & 7 deletions book/src/dynamic/secondary_command_buffers.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/dynamic/secondary_command_buffers.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
> <span style="display: flex; justify-content: center; margin-bottom: 16px"><img src="../images/i_have_no_idea_what_im_doing.jpg" width="256"></span>前面没有这个声明的章节都是直接从 <https://github.com/Overv/VulkanTutorial> 改编而来。<br/><br/>这一章和后面的章节都是原创,作者并不是 Vulkan 的专家。作者尽力保持了权威的语气,但是这些章节应该被视为一个 Vulkan 初学者的“尽力而为”。<br/><br/>如果你有问题、建议或者修正,请[提交 issue](https://github.com/KyleMayes/vulkanalia/issues)
Expand Down Expand Up @@ -296,12 +296,15 @@ use winit::event::{ElementState, VirtualKeyCode};
```rust,noplaypen
match event {
// ...
Event::WindowEvent { event: WindowEvent::KeyboardInput { input, .. }, .. } => {
if input.state == ElementState::Pressed {
match input.virtual_keycode {
Some(VirtualKeyCode::Left) if app.models > 1 => app.models -= 1,
Some(VirtualKeyCode::Right) if app.models < 4 => app.models += 1,
_ => { }
Event::WindowEvent { event, .. } => match event {
// ...
WindowEvent::KeyboardInput { event, .. } => {
if event.state == ElementState::Pressed {
match event.physical_key {
PhysicalKey::Code(KeyCode::ArrowLeft) if app.models > 1 => app.models -= 1,
PhysicalKey::Code(KeyCode::ArrowRight) if app.models < 4 => app.models += 1,
_ => { }
}
}
}
}
Expand Down
4 changes: 3 additions & 1 deletion book/src/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/faq.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
本页面列举了在开发 Vulkan 应用时可能遇到的常见问题及其解决方案。

* **(MacOS)** 我安装了 Vulkan SDK,但我运行 Vulkan 应用程序的时候遇到了找不到 `libvulkan.dylib` 的错误 —— 参见[MacOS Vulkan SDK 安装说明中的`环境配置`章节](./development_environment.md#setup-environment)

* **我在核心校验层中遇到了访问冲突(access violation)错误** &ndash; 确保未运行 MSI Afterburner / RivaTuner Statistics Server,因为它们和 Vulkan 之间存在一些兼容性问题。

* **我看不到任何来自校验层的消息/校验层不可用** &ndash; 首先确保校验层有机会打印错误信息,请在程序退出后保持终端窗口打开。在 Visual Studio 中,你可以通过使用 Ctrl-F5 而不是 F5 来运行程序;在 Linux 中,你可以从终端窗口执行程序。如果仍然没有消息,并且你确信校验层已启用,那么你应该按照[此页面上的“Verify the Installation”说明](https://vulkan.lunarg.com/doc/view/1.2.135.0/windows/getting_started.html)来确保 Vulkan SDK 已正确安装。同时确保你的 SDK 版本至少为 1.1.106.0,以支持 `VK_LAYER_KHRONOS_validation` 校验层。
Expand Down
4 changes: 2 additions & 2 deletions book/src/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/introduction.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
本教程是用 Rust 对 <https://vulkan-tutorial.com> 的改写版本,应当归功于原教程的作者 ([Alexander Overvoorde](https://github.com/Overv)) 及[其他贡献者们](https://github.com/Overv/VulkanTutorial/graphs/contributors)

Expand All @@ -20,7 +20,7 @@

* 一张支持 Vulkan 的显卡和驱动程序([NVIDIA](https://developer.nvidia.com/vulkan-driver)[AMD](http://www.amd.com/en-us/innovations/software-technologies/technologies-gaming/vulkan)[Intel](https://software.intel.com/en-us/blogs/2016/03/14/new-intel-vulkan-beta-1540204404-graphics-driver-for-windows-78110-1540)
* 使用 Rust 的经验
* Rust 1.51 或更高版本
* Rust 1.70 或更高版本
* 一些的 3D 计算机图形学知识

本教程不会要求你有 OpenGL 或者 Direct3D 的知识储备,但要求你必须理解 3D 计算机图形学的基础。例如,教程中不会解释透视投影背后的数学原理。[这本在线书籍](https://paroj.github.io/gltut/)是一个很好的计算机图形学入门资源。其他一些很好的计算机图形学资源包括:
Expand Down
2 changes: 1 addition & 1 deletion book/src/model/depth_buffering.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/model/depth_buffering.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
**本章代码:**[main.rs](https://github.com/chuigda/Vulkan-Tutorial-Rust-CN/tree/master/src/26_depth_buffering.rs) | [shader.vert](https://github.com/chuigda/Vulkan-Tutorial-Rust-CN/tree/master/shaders/26/shader.vert) | [shader.frag](https://github.com/chuigda/Vulkan-Tutorial-Rust-CN/tree/master/shaders/26/shader.frag)

Expand Down
2 changes: 1 addition & 1 deletion book/src/model/loading_models.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/model/loading_models.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
**本章代码:**[main.rs](https://github.com/chuigda/Vulkan-Tutorial-Rust-CN/tree/master/src/27_model_loading.rs)

Expand Down
2 changes: 1 addition & 1 deletion book/src/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/overview.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
本章会以介绍 Vulkan 和它所解决的问题开始。之后,我们会看到绘制第一个三角形所需的所有组件。这会给你一个总体的蓝图,以便你将每个后续章节放在正确的位置。之后我们会讨论 `vulkanalia` 提供的 Vulkan API。

Expand Down
2 changes: 1 addition & 1 deletion book/src/pipeline/conclusion.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/pipeline/conclusion.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
**本章代码:**[main.rs](https://github.com/chuigda/Vulkan-Tutorial-Rust-CN/tree/master/src/12_graphics_pipeline_complete.rs)

Expand Down
30 changes: 19 additions & 11 deletions book/src/pipeline/fixed_functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/pipeline/fixed_functions.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
**本章代码:**[main.rs](https://github.com/chuigda/Vulkan-Tutorial-Rust-CN/tree/master/src/10_fixed_functions.rs)

Expand All @@ -15,18 +15,17 @@
* 绑定(Bindings) &ndash; 数据之间的间隔,以及数据是逐顶点(per-vertex)还是逐个实例(per-instance)的(参见[实例化](https://en.wikipedia.org/wiki/Geometry_instancing)
* 属性描述(Attribute descriptions) &ndash; 顶点着色器接收的属性的类型,从哪个绑定中加载数据,以及从哪个偏移量开始加载

因为我们已经在顶点着色器中硬编码了数据,我们会将这个结构体的所有字段都保留默认值,表明我们不需要加载数据。我们会在顶点缓冲章节重新审视这个结构体。
因为我们已经在顶点着色器中硬编码了数据,我们会将这个结构体的所有字段都保留默认值,表明我们不需要加载数据。我们会在顶点缓冲章节重新审视这个结构体。`create_pipeline` 函数中 `vk::PipelineShaderStageCreateInfo` 的后面添加以内容:

```rust,noplaypen
let vertex_input_state = vk::PipelineVertexInputStateCreateInfo::builder();
```
unsafe fn create_pipeline(device: &Device, data: &mut AppData) -> Result<()> {
// ...
`create_pipeline` 函数中,我们会在 `vk::PipelineShaderStageCreateInfo` 结构体之后添加这个结构体。
let vertex_input_state = vk::PipelineVertexInputStateCreateInfo::builder();
```

<!--
<!-- 这里就不翻译了,免得读者误解
The `vertex_binding_descriptions` and `vertex_attribute_descriptions` fields for this struct that could have been set here would be slices of structs that describe the aforementioned details for loading vertex data.
这一句就不翻译了,免得读者误解。
-->

## 输入装配
Expand Down Expand Up @@ -231,7 +230,7 @@ let color_blend_state = vk::PipelineColorBlendStateCreateInfo::builder()

如果你想使用第二种混合方式(位运算结合),你应该把 `logic_op_enable` 设为 `true`。位运算操作可由 `logic_op` 字段指定。注意这会自动禁用第一种混合方式,就好像你把所有帧缓冲的 `blend_enable` 都置为了 `false``color_write_mask` 在这种模式下也会被用到,以决定哪些通道会被实际地传递到帧缓冲中。你也可以同时禁用这两种模式,就像我们这里做的一样,这样片元颜色就会原封不动地传递到帧缓冲中。

## 动态状态
## 动态状态(只是示例,不要添加到代码里)

有一部分状态是可以在不重新创建管线的情况下改变的。例如视口的大小、线宽和混合常量。如果你想这么做,那么你需要填充一个 `vk::PipelineDynamicStateCreateInfo` 结构体:

Expand Down Expand Up @@ -263,9 +262,18 @@ struct AppData {
然后在 `create_pipeline` 函数中,在调用 `destroy_shader_module` 之前创建这个对象:

```rust,noplaypen
let layout_info = vk::PipelineLayoutCreateInfo::builder();
+unsafe fn create_pipeline(device: &Device, data: &mut AppData) -> Result<()> {
// ...
data.pipeline_layout = device.create_pipeline_layout(&layout_info, None)?;
let layout_info = vk::PipelineLayoutCreateInfo::builder();
data.pipeline_layout = device.create_pipeline_layout(&layout_info, None)?;
device.destroy_shader_module(vert_shader_module, None);
device.destroy_shader_module(frag_shader_module, None);
Ok(())
}
```

这个结构体也用于指定*推式常量* —— 另一种给着色器传递动态值的方式,我们会在后面的章节中介绍。
Expand Down
2 changes: 1 addition & 1 deletion book/src/pipeline/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/pipeline/introduction.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
**本章代码:**[main.rs](https://github.com/chuigda/Vulkan-Tutorial-Rust-CN/tree/master/src/08_graphics_pipeline.rs)

Expand Down
2 changes: 1 addition & 1 deletion book/src/pipeline/render_passes.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> 原文链接:<https://kylemayes.github.io/vulkanalia/pipeline/render_passes.html>
>
> Commit Hash: ceb4a3fc6d8ca565af4f8679c4889bcad7941338
> Commit Hash: 7becee96b0029bf721f833039c00ea2a417714dd
**本章代码** [main.rs](https://github.com/chuigda/Vulkan-Tutorial-Rust-CN/tree/master/src/11_render_passes.rs)

Expand Down
Loading

0 comments on commit 3ab48bd

Please sign in to comment.