该文章主要用于提示内容更新,完整文档及工程请查阅

https://github.com/Italink/QtVulkan

Vulkan教程

学习途径

  • 教程

    • 极客教程(译):概念讲解,主要是Vulkan中各个数据结构的概念及使用。
    • https://vulkan-tutorial.com/:一个比较火的Vulkan基础教程,文档和代码齐全。
    • https://www.vulkan.org/learn:vulkan学习的整合网站,里面有很多资源和工具。
    • https://developer.nvidia.com/transitioning-opengl-vulkan:如何从OpenGL转到Vulkan。
  • Demo:从代码上手学习绝对是最快的一种方式,但需要你对Vulkan的整体结构都有一定认识,否则你会走很多弯路,下面的网站中有很多的样例:
    • https://github.com/Overv/VulkanTutorial:教程附带代码。
    • https://github.com/KhronosGroup/Vulkan-Hpp:Vulkan官方提供了很多使用Vulkan HPP的样例
    • !!https://github.com/SaschaWillems/Vulkan:拥有非常完善的样例,涵盖了大多数Vulkan的特性和一些高级图形算法。

推荐資料

Vulkan的书籍不多,由于它只是一个API,一个用于绘图的工具,做引擎和渲染的重点,并不在这上面,所以下面给大家推荐一下我觉得比较不错的资料:

  • Vulkan 官方文档

    • Khronos Group
    • Khronos Vulkan Registry - The Khronos Group Inc
  • OpenGL文档里面含有很多图形学内容:Contents

  • 图形学:

    书籍:

    • 《GPU Gems》Foreword | NVIDIA Developer
    • 《3D数学基础》《全局光照算法》《计算机图形学》...

    教程:(Games系列):GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili

  • 引擎

    • UE :0向往0 - 博客园
    • 《游戏引擎架构》

Vulkan与OpenGL的区别

我的使用体验:

  • 繁琐:OpenGL绘制基本三角形可能需要一两百行代码,Vulkan的代码量得翻几倍。
  • 明确:OpenGL通过对一个假想的渲染管线进行操作,而Vulkan中能确切地接触到渲染管线的结构。
  • 刺激:OpenGL出现内存泄漏,顶多说把进程搞崩溃,Vulkan中你就等着重启吧。
  • 巴适:开启了验证层的Vulkan拥有报错提示,可以明确指出问题。

为什么要学Vulkan

  • 相较于OpenGL,Vulkan允许你掌控更多的细节,这意味着:

    • 更多的优化空间:能针对特定的应用场景优化渲染。
    • 明确地控制渲染流程:不再像OpenGL一样,大多操作交由驱动来实现。
  • OpenGL已不做维护,Vulkan是未来。

本教程的目的

  • 从OpenGL快速上手Vulkan。
  • 借助Qt和Vulkan-HPP,编写简短、优雅的代码结构让可读性更高。
  • 借助Github的版本管理回顾整体代码,而不是只有代码片段。
  • 教程讲述的不只是Vulkan,还包含现代C++的开发流。

笔者感言

目前vulkan的教程整体比较少,国内大多是一些零零散散的概念和代码,国外有一些不错的教程,但也存在一些问题:一大堆的文字概念,代码封装的到处都是,Demo写的是狂拽酷炫,看完效果:”卧槽,秀。卧槽,nb“,再看代码:”我尼玛“,这也是笔者为什么想写这个教程的原因,由于笔者工作上的事情比较多,会提前写好代码,文档可能写的会比较慢,还请大家见谅。

开发环境

  • Vulkan - SDK (Vulkan - HPP

    使用Vulkan必须安装Vulkan SDK,Vulkan使用C风格的API,跟OpenGL一样恶心——使用宏来定义各种类型格式

    不过好在Vulkan提供了c++绑定,位于头文件vulkan.hpp中,使用它我们可以编写可读性更高的代码。

  • Qt 6.2.0(如果你已经有Qt5,则无需更换)

    Qt提供Vulkan的窗口支持,使用它,可以在学习初期跳过Surface,SwapChain,ComandBuffer,Device等一系列跟渲染关联不大的内容,快速上手Vulkan核心的渲染体系,从而大大降低学习难度。

  • VS 2019(如果你有VS2017,无需更换)

    VS 加上两个插件( 番茄助手 + CodeMaid)后,编码体验比Qt Creator 好一些 ,但安装VS的主要原因还是因为 MSVC 比 MinGW 更通用,你也可以在Qt Creator 上使用 MSVC。

  • Cmake 64 位

    很多初学的小伙伴原来可能没接触过自动化的项目构建,都是使用IDE的图形界面来管理项目工程,这在小项目中使用是没什么问题的,大项目中会存在很多子项目,各种依赖都需要定义,最重要的是项目跨平台的问题,比如mac上没有vs,开发一般使用xcode,你拿个vs的工程给xcode也不行啊,cmake是一个不错的选择(),使用它可以生成各个IDE的工程文件。在开源项目中能看到有个CMakeLists.txt,别提有多亲切了。

  • Git & TortoiseGit

    Git是当前比较主流的版本管理工具 ,而TortoiseGit是它的图形界面,基本现在在实际工作都会使用,还不会用的小伙伴可以学下。

推荐工具

  • Typora:Markdown编辑器,Markdown是一种轻量级标记语言,使用它可以快速编写美观的文档,现在使用非常普遍,它的语法很简单,大家可以学下。

Vulkan 教程(1)开篇相关推荐

  1. [译]Vulkan教程(05)Instance

    [译]Vulkan教程(05)Instance Creating an instance 创建一个instance The very first thing you need to do is ini ...

  2. [译]Vulkan教程(04)基础代码

    [译]Vulkan教程(04)基础代码 General structure 通用结构 In the previous chapter you've created a Vulkan project w ...

  3. [译]Vulkan教程(32)生成mipmap

    [译]Vulkan教程(32)生成mipmap Generating Mipmaps 生成mipmap Introduction 入门 Our program can now load and ren ...

  4. [译]Vulkan教程(20)重建交换链

    [译]Vulkan教程(20)重建交换链 Swap chain recreation 重建交换链 Introduction 入门 The application we have now success ...

  5. [译]Vulkan教程(08)逻辑设备和队列

    [译]Vulkan教程(08)逻辑设备和队列 Introduction 入门 After selecting a physical device to use we need to set up a  ...

  6. Vulkan教程 - 06 交换链

    Swap chain(交换链) 现在到了Vulkan教程第十章了,学习交换链.Vulkan没有默认帧缓冲的概念,因此它需要一个基础设施,能够在我们通过屏幕看到内容之前,持有我们想要渲染的东西的缓冲.该 ...

  7. [Vulkan教程]绘制一个三角形/呈现/交换链(Swip chain)

    文章目录 检查交换链支持 启用设备扩展 查询交换链支持详情 为交换链选择正确的设置 表面格式 呈现模式 交换范围 创建交换链 检索交换链中的图像 Vulkan没有默认缓冲区的概念,因此需要一个东西提供 ...

  8. [Vulkan教程]概述

    文章目录 Vulkan起源 绘制三角形 第一步 - 创建实例和选择物理设备 第二步 - 逻辑设备和队列家族 第三步 - 窗口表面和交换链 第四步 - 图像视图和帧缓冲 第五步 - 渲染通道 第六步 - ...

  9. Vulkan教程(10): Swap chain(交换链)

    Vulkan官方英文原文: https://vulkan-tutorial.com/Drawing_a_triangle/Presentation/Swap_chain 对应的Vulkan技术规格说明 ...

  10. [Vulkan教程] 一: 创建VkDevice

    这个系列的文章是写给对已有的D3D11和GL比较熟悉并理解多线程.资源暂存.同步等概念但想进一步了解它们是如何以Vulkan实现的读者. 文章并不追求通俗易懂,里面有很多术语(为了解里面的晦涩内容,建 ...

最新文章

  1. 清华大学校计算机志班,计算机系2020年度酒井之星 | 个人篇
  2. php框架快速入门,php-laravel4.0框架 简单快速入门
  3. ecshop程序设置伪静态简单三步骤
  4. MapReduce学习笔记(4)
  5. HDU1013 POJ1519 Digital Roots
  6. 可怕!中国博士留学生在美国遭枪击身亡,北大毕业,已经读到了博士第四年...
  7. SpringCloud 教程 | 第六篇: 分布式配置中心 (Spring Cloud Config)
  8. continue,return,break 在for循环中的作用
  9. 今晚直播丨易鲸捷HTAP融合型分布式数据库问题诊断介绍
  10. CISCO Nexus 系列交换机配置命令
  11. 设计模式-工厂方法的应用场景及Java中对工厂方法的应用
  12. 下载歌曲的时候嫌麻烦?打造专属你的音乐下载器
  13. QQ加群组件-Android
  14. 因子分析python代码_关于「因」的诗词(649首)_诗词名句网
  15. RISC-V SiFiveU64内核——L2 Prefetcher预期器
  16. 解决GitHub conle卡顿(曲线救国)
  17. BUUCTF-Crypto-MD5
  18. win7 打开文件 计算机,如何在win7计算机上打开dat文件,如何在win7计算机上打开dat文件...
  19. 1skp素材 su模型在enscape不显示?怎么办?
  20. 如何在win7下装win8以及我的win8之旅

热门文章

  1. zabbix3.0 之短信报警配置
  2. Java核心技术 卷一 - 第 1 章 Java 程序设计概述
  3. python爬虫获取下一页_python爬虫获取下一页
  4. 关于selenium获取网页下一页的点击事件
  5. 密码算法测试向量——目录
  6. php wamp一键环境包,phpwind本地环境一键安装包Wamp 5.0使用说明
  7. 模拟量万能换算公式4-20ma
  8. 给想上MIT的牛学生说几句
  9. SNF快速开发平台2019-权限管理模型-平台服务(多平台\多组织\SAAS\多系统)
  10. php 卡路里计算,热量换算_懒人工具|www.ab173.com