Vulkan教程 - 04 物理设备与队列族-卡核

Vulkan教程 – 04 物理设备与队列族

在通过VkInstance初始化Vulkan后,我们需要选择物理硬件也就是显卡来进行后面的工作了,在initVulkan方法中添加一个函数pickPhysicalDevice。我们选择的显卡存储在VkPhysicalDevice...
Vulkan教程 - 09 固定管线-卡核

Vulkan教程 – 09 固定管线

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

Vulkan教程 – 14 顶点缓冲

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

Vulkan教程 – 06 交换链

Swap chain(交换链) 现在到了Vulkan教程第十章了,学习交换链。Vulkan没有默认帧缓冲的概念,因此它需要一个基础设施,能够在我们通过屏幕看到内容之前,...
Vulkan教程 - 13 重建交换链-卡核

Vulkan教程 – 13 重建交换链

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

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

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

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

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

Vulkan教程 – 12 栅栏和信号量

        这一章所有东西都会整合到一起了。我们将会写一个drawFrame方法,它会被主循环调用,将三角形呈现到屏幕上。创建drawFrame方法在mainLoop的while内处理事件后调用&...
Vulkan教程 - 03 验证层-卡核

Vulkan教程 – 03 验证层

Vulkan API设计一开始就是要减轻驱动负担,所以API本身的错误检查很少。但是并不表示我们不能向API添加这些检查,这也就是validation layers的功能了。验证层中常用的操作有:...
Vulkan教程 - 07 图像视图和图形管线-卡核

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

图像视图 使用任何的VkImage,包括在交换链中的,我们都要在渲染管线中创建VkImageView对象。图像视图描述了如何获取图像,获取图像的哪个部分,比如它是否应该被当作2...
Vulkan教程 - 02 代码架构及实例创建-卡核

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

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

Vulkan教程 – 01 环境搭建

根据工作需要,开始学习Vulkan了。由于以前没有太接触图形的知识,感觉Vulkan学习任重道远啊。毕竟是很底层,很核心的技术,而且要用C或者C++,难是肯...