Vulkan教程 - 03 验证层-卡核

Vulkan教程 – 03 验证层

Vulkan API设计一开始就是要减轻驱动负担,所以API本身的错误检查很少。但是并不表示我们不能向API添加这些检查,这也就是validation layers的功能了。验证层中常用的操作有:...
Vulkan教程 - 05 逻辑设备与窗口表面-卡核

Vulkan教程 – 05 逻辑设备与窗口表面

逻辑设备 选择了物理设备后,我们需要建立逻辑设备来交互了。逻辑设备创建过程和实例创建过程类似,且描述了我们想要的特性。向类中添加一个新的成员变量存储逻辑设备句柄: ...
Vulkan教程 - 17 描述符与内存对齐-卡核

Vulkan教程 – 17 描述符与内存对齐

之前章节的描述符布局描述了描述符可以绑定的类型。本章我们要对每个VkBuffer资源创建一个描述符集合来将它绑定到统一缓冲描述符上。 描述符集合不能够直接创建,必须从一个池中分配ÿ...
Vulkan更新扩展;Vulkan添加扩展-卡核

Vulkan更新扩展;Vulkan添加扩展

最近学到了如何更新和添加Vulkan的扩展,就是通过更新驱动的方式。自己写代码制作扩展我不太确定是否可以。 问题是这样的: const std::vector<const char*> deviceExtension...
Vulkan教程 - 14 顶点缓冲-卡核

Vulkan教程 – 14 顶点缓冲

        接下来几章,我们会使用内存中的顶点缓冲替换掉顶点着色器中的硬编码顶点数据。我们用最简单的方式开始,创建一个CPU可见的缓冲,使用memcpy来将顶点数据直...
Vulkan教程 - 09 固定管线-卡核

Vulkan教程 – 09 固定管线

固定管线         老式图形API为多数图形管线提供了默认状态。而在Vulkan中你必须明确所有的东西,从视口大小到混合函数。本章我们会填充所有的结构体来配置这些固定管线操作。 ...
Vulkan教程 - 22 深度缓冲-卡核

Vulkan教程 – 22 深度缓冲

        现在创建的几何对象是投影到3D中的,但是还是完全的平面。本章我们添加一个Z坐标来为3D网格做准备。我们会使用这个第三个坐标来放置一个正方形在我们当前正方形之上ÿ...
Vulkan教程 - 13 重建交换链-卡核

Vulkan教程 – 13 重建交换链

现在我们的程序能成功绘制三角形了,但是还有一些情况,它还不能很好地处理。窗口表面可能会改变,导致交换链与其不兼容。这种事情发生的可能原因之一是窗口的大小改变了。我...
Vulkan教程 - 07 图像视图和图形管线-卡核

Vulkan教程 – 07 图像视图和图形管线

图像视图 使用任何的VkImage,包括在交换链中的,我们都要在渲染管线中创建VkImageView对象。图像视图描述了如何获取图像,获取图像的哪个部分,比如它是否应该被当作2...
Vulkan教程 - 08 着色器及编译SPIR-V-卡核

Vulkan教程 – 08 着色器及编译SPIR-V

着色器模块 不像是之前的API,Vulkan着色器代码一定要用字节码格式,而不是人类可读的语法如GLSL和HLSL。这个字节码就是SPIR-V,设计用于Vulkan和OpenCL。这是一个可以用于编...
Vulkan教程 - 23 加载模型-卡核

Vulkan教程 – 23 加载模型

现在你的程序已经为有贴图的3D网格渲染做好准备了,但是现在的顶点和索引数组都是比较无聊的。本章我们扩展该程序来从真实的模型文件加载顶点和索引数据,以让显卡做点真正的工作。...
Vulkan教程 - 02 代码架构及实例创建-卡核

Vulkan教程 – 02 代码架构及实例创建

本篇博客继续学习Vulkan,主要是基础代码学习记录。 先来一个通用的结构: #include <vulkan/vulkan.h> #include <iostream> #include <stdexcept> #include <...