由于我需要使用一个新机器一段时间,不得不在新机器上配置一下这个工程的环境。所以顺便将配置的步骤记录下来,以便之后遇到类似的需求。
步骤0:从GIT上得到工程源码
工程GIT地址:https://gitee.com/yaksue/yaksue-graphics
虽然可以选择直接下载源码,但还是建议使用GIT:
GIT:https://git-scm.com/
TortoiseGit:https://tortoisegit.org/
步骤1:安装VS2019
从微软VisulStudio官网上下载VS2019并安装
安装时至少勾选 “使用C++的桌面开发”
步骤2:Vulkan环境
下载VulkanSDK并安装。
(应该会自动配置VK_SDK_PATH
环境变量,这将成为工程找到头文件和库文件的路径)
步骤3:D3D12环境
验证
随后,应该可以看到四种图形API都可以正常工作了,如果有问题,则参见下面的问题排查。
(OpenGL不需要额外的配置操作,如果感兴趣此部分做的操作,可见《试用GLFW并创建OpenGL和DX的环境》和《使用GLAD加载OpenGL的库》)
(D3D11也不需要额外的配置操作,因为配置D3D12的同时D3D11也配置好了。)
问题排查
1)error C2102: “&”要求左值
解决方法来源于Introduction to 3D Game Programming with DirectX 12一书学习记录(第一个例子编译错误)_WhoisPo的专栏-CSDN博客
2)VkResult 在版本间不一致
这个VkResultStrings.h
是我用自己的小工具生成的,对应于当时的VulkanSDK版本,如果版本间不一致,则这里也需要修改。
3)Validation Layer不一致
vkEnumerateInstanceLayerProperties
返回了你当前的机器可用的 Validation Layer,可能并不包括我的代码中的VK_LAYER_KHRONOS_validation。为此,需要修改这里的Validation Layer为你的机器中可用的一个,比如上图中的VK_LAYER_LUNARG_standard_validation。
4)Validation Layer缺失
我在一个好久不开的机器上运行程序发现validation layers一个合适的都没有:
解决方式是重新安装了最新版VulkanSDK,然后就可以看到了:
5)配置界面.Net缺失
打开 YaksueGraphicsConfigGUI.exe 时:
可能是它需要的.Net版本较老了。
可以打开 YaksueGraphicsConfigGUI/YaksueGraphicsConfigGUI.sln,它应该会提示你让你安装对应的.Net版本: