Development Environment(开发环境)
1. 安装Vulkan SDK
官网
2. 安装cmake和minGW
2.1 cmake
官网
双击可执行文件,然后直接安装,注意环境变量选择设置,否则需要自己操作。
2.2 minGW
官网
下载如下图所示:
其中:
- 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 代码仓地址
代码仓
欢迎关注,后面会又持续更新。