vulkan

1.Vulkan 环境配置

2018-11-27  本文已影响0人  MiAo鲜声

环境:

VS2017

Windows 10

GTX 940M

首先我们要配置库

    因为我实在是太懒了,不愿意重新配一遍,所以大约讲讲流程吧。环境配   这个vulkan环境配置应该能查到,如果查不到,可以来问我,我不一定会看见。。。

Lunarg SDK: 

vulkan的开发者库,实在是爽爆了,里面还带了好多实用的工具,不像OPENGL一样吃屎,出了错干瞪眼,只能一点点找。

这里是 Lunarg SDK下载网址 ,下完了后安装,他会自动给你的系统添加环境变量,你就不用手动添加环境变量了,安装完成后你还会发现里面自带第三方库 GLM 和 SDL2 ,也就是下面我们要介绍的两个库。

定位到 vulkan sdk 的安装目录下的  \Bin 文件夹

运行里面的cube.exe如果运行成功了那么说明 :

你的vulkan sdk安装成功了

vulkan 运行库也安装成功了

你的显卡驱动也支持到位了。

如果没有运行成功,大多数原因可能是你的显卡驱动需要升级了

要去核弹厂去升级你的核弹驱动

如果还不行去找Demos文件夹里的VS工程打开编译一下,如果编译成功了,说明完全没问题,没成功的自行找原因。

记住:只要链接vulkan-1.lib就好了,跟vulkan-1.lib在一起的各种VK_Layer*.lib不要链接,否则你会在vkCreateInstance函数崩溃,而且找不到原因。


GLFW:一个创建窗口的库

这个是个跨平台的窗口库,我们此教程用的是这个库,

为什么用这个库,因为之前学OPENGL的时候,官方推荐用的这个库,所以比较熟悉一些,不想再学新的了。

两种安装glfw库的方式:


第一种是下载源文件,自己cmake一下,把Debug版本的glfw3.lib修改成glfw3d.lib就能放在一起了,Debug选glfw3d.lib,Release版本选择glfw3.lib


第二种是直接下载二进制文件,他给你直接编译好了,直接拿来用好了。

glfw所需要的lib

Perfect ! 是不是很完美呢?


GLM:一个数学库(Lunarg SDK自带的第三方库)

里面提供了方便的数学操作,各种矩阵运算,方便。但是我不打算用,我想自己写一个,用自己的安心点,细节底层自己都了解,出了问题好解决。

SDL2:一个创建窗口的库(Lunarg SDK自带的第三方库)

和 glfw 一样用来创建窗口的,恩。不过我不打算用


我们都准备好了我们需要的库,接下来要在VS中配置。

VS菜单->项目->属性

打开属性页

vs属性页

大家肯定都被VS的项目配置弄迷糊过,在这里给大家讲清楚include ,lib ,dll等等这些东西都该放在那里


包含目录 :应该填 存放我们要引入的头文件 的 路径 , 这个告诉编译器应该从哪里找头文件,一般把库的include路径添加进去就好

库目录 :应该填 存放我们要引入的lib文件路径 ,这个告诉编译器应该从哪里找lib

链接lib

附加依赖项 : 应该填 要链接的lib ,编译器会从我们之前填的库目录里找附加依赖项,Debug用 glfw3d.lib,Release用glfw3.lib

正当你开开心心运行自己的代码的时候,突然蹦出来了找不到 dll 给你浇了一头冷水。你以为这样就结束了?No,你还要给编译器指定编译环境的dll目录。

就在下图里添加

dll目录配置

环境 :填 dll 所在的路径

 填的是这个 Path=%Path%;D:\VULKAN\1.1.85.0\Source\li

其实我也不确定对不对,如果还报dll找不到的错误话,自己去找找解决方法吧。

我们总结一下vs环境配置:

一共需要配置四个地方

头文件

lib目录

lib文件

dll目录

测试代码:

可以把里面glm还有sdl的代码去掉,如果不想用的话。

#define GLFW_INCLUDE_VULKAN

#include <GLFW/glfw3.h>

#define GLM_FORCE_RADIANS

#define GLM_FORCE_DEPTH_ZERO_TO_ONE

#include <glm/vec4.hpp>

#include <glm/mat4x4.hpp>

#include <iostream>

int main() {

    glfwInit();

    glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);

    GLFWwindow* window = glfwCreateWindow(800, 600, "Vulkan window", nullptr, nullptr);

    uint32_t extensionCount = 0;

    vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr);

    std::cout << extensionCount << " extensions supported" << std::endl;

    glm::mat4 matrix;

    glm::vec4 vec;

    auto test = matrix * vec;

    while (!glfwWindowShouldClose(window)) {

        glfwPollEvents();

    }

    glfwDestroyWindow(window);

    glfwTerminate();

    return 0;

}

#至于linux驱动下的环境配置,哦吼吼,显卡驱动是一个大难关。还好我用的ubuntu里面自己给安装,之前用了别的方法,没成功。

[ubuntu安装英伟达显卡驱动-百度经验](https://jingyan.baidu.com/article/d7130635c5a86113fdf47532.html)

下一节:Instance

上一篇下一篇

猜你喜欢

热点阅读