【Vulkan Tutorials 01】【环境搭建】三角形例子

Development Environment(开发环境)

1. 安装Vulkan SDK

官网

2. 安装cmake和minGW

2.1 cmake

官网

双击可执行文件,然后直接安装,注意环境变量选择设置,否则需要自己操作。

2.2 minGW

官网

下载如下图所示:
MinGW_Download.png
其中:

  • x86_64:表示64位硬件平台;
  • win32:表示Windows平台程序;
  • seh:表示异常处理模式
    一般情况下,Windows开发都这样选择。

2.3 环境变量

环境变量

3. 安装GLFW

官网

3.1 下载GLFW的源码

3.2 编译安装GLFW

C:\glfw-3.3.8\glfw-3.3.8\build> cmake -G "MinGW Makefiles" ..
C:\glfw-3.3.8\glfw-3.3.8\build> mingw32-make install

会有如下输出:

Install the project...
-- Install configuration: ""
-- Installing: C:/Program Files (x86)/GLFW/lib/libglfw3.a
-- Installing: C:/Program Files (x86)/GLFW/include/GLFW
-- Installing: C:/Program Files (x86)/GLFW/include/GLFW/glfw3.h
-- Installing: C:/Program Files (x86)/GLFW/include/GLFW/glfw3native.h
-- Installing: C:/Program Files (x86)/GLFW/lib/cmake/glfw3/glfw3Config.cmake
-- Installing: C:/Program Files (x86)/GLFW/lib/cmake/glfw3/glfw3ConfigVersion.cmake
-- Installing: C:/Program Files (x86)/GLFW/lib/cmake/glfw3/glfw3Targets.cmake
-- Installing: C:/Program Files (x86)/GLFW/lib/cmake/glfw3/glfw3Targets-noconfig.cmake
-- Installing: C:/Program Files (x86)/GLFW/lib/pkgconfig/glfw3.pc
PS C:\glfw-3.3.8\glfw-3.3.8\build>

3.3 拷贝生成库文件

由于自己的项目文件夹,然后设置使用。

4. 创建CMake项目

先把我创建好的项目目录结构展示如下:

├─SelfCode
│      CMakeLists.txt
│      main.cpp
└─ThirtParty├─GLFW            └─glm

SelfCode目录是存放自己编写的代码;
ThirgParty目录是存放需要的第三方依赖库。
其中,CMakeLists.txt内容如下:

# 设置cmake最小版本依赖值
cmake_minimum_required(VERSION 3.20.0)# 设置当前项目名称及版本号
project(DrawTriangle VERSION 0.1.0)# 设置CPP版本为 c++17
set(CMAKE_CXX_STANDARD 17)# 可执行二进制文件编译生成
add_executable(DrawTriangle main.cpp)# 设置glfw3库文件的搜索目录,以及搜索,并将其链接到当前可执行二进制文件中
set(glfw3_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../ThirtParty/GLFW/lib/cmake/glfw3)
find_package(glfw3 3.3 REQUIRED)
target_link_libraries(DrawTriangle glfw)# 搜索vulkan库文件,并将其链接到当前可执行二进制文件中
find_package(Vulkan REQUIRED)
target_include_directories(DrawTriangle PRIVATE ${Vulkan_INCLUDE_DIRS})
target_link_libraries(DrawTriangle ${Vulkan_LIBRARIES})

其中,main.cpp内容如下:

#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>#include <iostream>
#include <stdexcept>
#include <cstdlib>class DrawTriangle {
public:// 构造函数,传入窗口宽高DrawTriangle(uint32_t _width, uint32_t _height) :window_width(_width), window_height(_height) {}void Run() {initWindow();initVulkan();mainLoop();cleanup();}private:void initWindow() {glfwInit();glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);window = glfwCreateWindow(window_width, window_height, "DrawTriangle", nullptr, nullptr);}void initVulkan() {}void mainLoop() {while (!glfwWindowShouldClose(window)) {glfwPollEvents();}}void cleanup() {glfwDestroyWindow(window);glfwTerminate();}private:uint32_t window_width;uint32_t window_height;GLFWwindow *window;
};int main() {DrawTriangle triangle(800, 600);try {triangle.Run();} catch (const std::exception& e) {std::cerr << e.what() << std::endl;return EXIT_FAILURE;}return 0;
}

4.1 编译运行

D:\DrawTriangle\SelfCode\build> cmake -G "MinGW Makefiles" ..
D:\DrawTriangle\SelfCode\build> mingw32-make.exe -j32
D:\DrawTriangle\SelfCode\build> .\DrawTriangle.exe

结果

5. 最终结果

三角形

6 代码仓地址

代码仓

欢迎关注,后面会又持续更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/262089.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis中的AOF重写到底是怎么一回事

首先我们知道AOF和RDB都是Redis持久化的方法。RDB是Redis DB&#xff0c;一种二进制数据格式&#xff0c;这样就是相当于全量保存数据快照了。AOF则是保存命令&#xff0c;然后恢复的时候重放命令。 AOF随着时间推移&#xff0c;会越来越大&#xff0c;因为不断往里追加命令。…

k8s(2)

目录 一.二进制部署k8s 常见的K8S安装部署方式&#xff1a; k8s部署 二进制与高可用的区别 二.部署k8s 初始化操作&#xff1a; 每台node安装docker&#xff1a; 在 master01 节点上操作; 准备cfssl证书生成工具:&#xff1a; 执行脚本文件&#xff1a; 拉入etcd压缩包…

【前端素材】推荐优质后台管理系统inspina平台模板(附源码)

一、需求分析 后台管理系统是一个集成了多种功能模块的系统&#xff0c;通过这些模块的协同工作&#xff0c;实现对网站、应用程序或系统的全面管理和控制。管理员通过后台管理系统可以高效地管理用户、内容、数据、权限等方面的工作&#xff0c;确保系统的正常运行和安全性。…

软件压力测试:测试方法与步骤详解

随着软件应用的不断发展&#xff0c;用户对系统性能的要求也逐渐提高。在不同的负载条件下&#xff0c;系统必须能够保持稳定、高效的运行。软件压力测试是一种验证系统在各种负载情况下性能表现的关键手段。本文将详细探讨软件压力测试的方法和步骤。 1. 明确测试目标 在进行压…

error: src refspec main does not match any解决办法

一、问题描述&#xff1a; 用GitHub Actions自动部署Hexo&#xff0c;到了最关键的一步&#xff1b;突然报错&#xff1a;error: src refspec main does not match any 1、错误一&#xff1a; main分支应填写为master分支&#xff1b;但是只改这里也会报其他错误 2、错误二&a…

关于运行flutter app 运行到模拟器出现异常提示

Exception: Gradle task assembleDebug failed with exit code 1 解决方案&#xff1a; 1.讲当前文件的distributionUrl值改为 https://mirrors.cloud.tencent.com/gradle/gradle-7.4-all.zip

C++模板从入门到入土

1. 泛型编程 如果我们需要实现一个不同类型的交换函数&#xff0c;如果是学的C语言&#xff0c;你要交换哪些类型&#xff0c;不同的类型就需要重新写一个来实现&#xff0c;所以这是很麻烦的&#xff0c;虽然可以cv一下&#xff0c;有了模板就可以减轻负担。 下面写一个适…

【C深剖】typedef关键字

简介&#xff1a;本系列博客为C深度解剖系列内容&#xff0c;以某个点为中心进行相关详细拓展 适宜人群&#xff1a;已大体了解C语法同学 作者留言&#xff1a;本博客相关内容如需转载请注明出处&#xff0c;本人学疏才浅&#xff0c;难免存在些许错误&#xff0c;望留言指正 作…

Photoshop 2023(Ps)下载安装及详细安装教程

Photoshop(Ps)的介绍 Adobe Photoshop&#xff0c;简称“PS”&#xff0c;是由AdobeSystems开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具&#xff0c;可以有效地进行图片编辑和创造工作。PS有很多功能&#xff0c;在图像、…

贷齐乐系统最新版SQL注入(无需登录绕过WAF可union select跨表查询)

一、环境 已上传资源&#xff08;daiqile&#xff09; 二、代码解释 1.1Request 不管get请求还是post请求都可以接收到 1.2过滤的还挺多 1.3第二个WAF把数据分为两个了一个Key一个value&#xff0c;全是explode的功劳 1.4submit是if进入的前提 很明显走进来了 1.5那我们在这…

【Python笔记-设计模式】装饰器模式

一、说明 装饰器模式是一种结构型设计模式&#xff0c;旨在动态的给一个对象添加额外的职责。 (一) 解决问题 不改变原有对象结构的情况下&#xff0c;动态地给对象添加新的功能或职责&#xff0c;实现透明地对对象进行功能的扩展。 (二) 使用场景 如果用继承来扩展对象行…

隐藏饿了么el-select组件的el-select-dropdown部分,只使用el-select的显示框

隐藏饿了么el-select组件的el-select-dropdown部分,只使用el-select的显示框 问题: 由于el-select组件的el-select-dropdown部分是自动插入在最外层Body上的&#xff0c;所以在当前组件的scoped中让el-select-dropdown组件display:none不会生效所以需要&#xff1a; :popper-…

网页403错误(Spring Security报异常 Encoded password does not look like BCrypt)

这个错误通常表现为"403 Forbidden"或"HTTP Status 403"&#xff0c;它指的是访问资源被服务器理解但拒绝授权。换句话说&#xff0c;服务器可以理解你请求看到的页面&#xff0c;但它拒绝给你权限。 也就是说很可能测试给定的参数有问题&#xff0c;后端…

Excel图表 - 条形图误差线组合

首先为了方便展示&#xff0c;我们将元素种类列进行一下汇总显示 1、在AB列之间插入一列&#xff0c;输入函数IF(A2A1,“”,A2)&#xff0c;这样我们就可以把同类名称的只显示一个名称&#xff0c;方便后续图表展示 2、选中BCD列插入一个条形图 3、然后加3列辅助列&#xff…

一种基于动态水位值的Flink调度优化算法(flink1.5以前),等同于实现flink的Credit-based反压原理

优化flink反压 说明1 flink反压介绍1.1 介绍1.2 大数据系统反压现状1.4 flink task与task之间的反压1.5 netty水位机制作用分析 2 反压优化算法3 重点&#xff01; 但是 可但是 flink1.5以后的反压过程。4 flink反压问题的查找瓶颈办法 说明 首先说明&#xff0c;偶然看了个论…

电脑录屏软件哪个好用?实测告诉你答案(2024年最新)

在当今信息化快速发展的时代&#xff0c;无论是录制在线课程、游戏操作&#xff0c;还是制作教程、会议记录&#xff0c;一款电脑录屏软件显得尤为重要&#xff0c;可是电脑录屏软件哪个好用呢&#xff1f;本文将介绍三款主流的电脑录屏软件&#xff0c;通过分步骤详细讲述&…

(提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战

文章目录 &#xff08;提供数据集下载&#xff09;基于大语言模型LangChain与ChatGLM3-6B本地知识库调优&#xff1a;数据集优化、参数调整、提示词Prompt优化本地知识库目标操作步骤问答测试的预设问题原始数据情况数据集优化&#xff1a;预处理&#xff0c;先后准备了三份数据…

CMD命令大全

CMD命令&#xff1a;开始&#xff0d;>运行&#xff0d;>键入cmd或command&#xff08;在命令行里可以看到系统版本、文件系统版本&#xff09; appwiz.cpl&#xff1a;程序和功能calc&#xff1a;启动计算器certmgr.msc&#xff1a;证书管理实用程序charmap&#xff1a…

stable diffusion官方版本复现

踩了一些坑&#xff0c;来记录下 环境 CentOS Linux release 7.5.1804 (Core) 服务器RTX 3090 复现流程 按照Stable Diffusion的readme下载模型权重、我下载的是stable-diffusion-v1-4 版本的 1 因为服务器没法上huggingface&#xff0c;所以得把权重下载到本地&#xff…

[HTML]Web前端开发技术27(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;佬佬会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…