米鼠商城

多快好省,买软件就上米鼠网

最新项目

人才服务

靠谱的IT人才垂直招聘平台

DX12龙书 00 - 环境配置:通过 Visual Studio 2019 运行示例项目

  • Ellison
  • 7
  • 2021-04-06 11:23

转:

DX12龙书 00 - 环境配置:通过 Visual Studio 2019 运行示例项目

0x00 安装 Visual Studio 2019


安装 Visual Studio 2019 以及相关组件。

注:安装组件时带的 Windows 10 SDK 可以在 Individual components 中更换,这里更换为 10.0.19041.0。

0x01 新建工程


打开 Visual Studio 2019 并创建一个空项目,名字随意。

0x02 下载源码


源码下载地址:https://github.com/d3dcoder/d3d12book

下载完成后将整个 CommonChapter 6 Drawing in Direct3D\Box 中的 ShadersBoxApp.cpp 复制到 0x02 步骤创建的项目中。

我的项目名为 dx12,拷贝后的文件结构如下(红色框中的是复制过来的文件):

0x03 构建项目


1.右键单击解决方案资源管理器的项目名称,在弹出的下拉菜单中依次选择 Add(添加) -> Existing Item(现有项),将文件 BoxApp.cpp 以及 Common 文件夹中的所有文件添加到项目中。添加后,解决方案资源管理器看起来应该和下图相同。

2.右键单击解决方案资源管理器的项目名称,在弹出的下拉菜单中选择 Properties(属性)。再从 Configuration Properties(配置属性) -> General(常规) 选项卡中,将 Windows SDK Version 设置为版本10.0.19041.0(0x01 安装的 Windows 10 SDK 版本)。

3.在主菜单中选择 Debug(调试) -> Start Debugging(开始调试)进行编译。

0x04 解决报错


点击开始调试后并没有成功运行项目,还有一些报错需要解决。

error C1083

首先是 BoxApp.cpp 中,遇到报错,无法打开源文件:

这一报错是由于我们创建的项目的文件结构与官方示例项目的文件结构有所不同。这里可以按照示例的文件结构来构建我们的项目,也可以修改这里的引用路径,使之符合我们的项目结构。我用的是第二种方法,修改后报错消失:

error C2664

error C2664: 'HANDLE CreateEventExW(LPSECURITY_ATTRIBUTES,LPCWSTR,DWORD,DWORD)': cannot convert argument 2 from 'bool' to 'LPCWSTR'

这里的报错位于 d3dApp.cpp 的 547 行,无法将 bool 转换为 LPCWSTR。这里可以将第二个参数修改为 nullptr来解决。

// 修改前
HANDLE eventHandle = CreateEventEx(nullptr, false, false, EVENT_ALL_ACCESS);

// 修改后
HANDLE eventHandle = CreateEventEx(nullptr, nullptr, false, EVENT_ALL_ACCESS);

error LNK2019

error LNK2019: unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)

这里的错误是因为,新建的空项目默认使用的是 main 函数作为入口,需要将它修改为符合示例项目的 WinMain

修改步骤如下:

  1. 右键单击解决方案资源管理器的项目名称,在弹出的下拉菜单中依次选择 Properties(属性)
  2. 依次选择 C/C++ -> Preprocessor -> Preprocessor Definitions,删除其中的 _CONSOLE 添加 _WINDOWS
  3. 依次选择 Linker -> System -> SubSystem,选择 Windows(/SUBSYSTEM:WINDOWS)

HR Failed

运行后,弹出错误提示窗:

hr failed in dx12Commond3dUtil.cpp; line 111; error: The system cannot find the path specified.

这里的错误是因为,Start Debugging 运行生成的 .exe 位于 Debug 文件夹下,程序找不到项目指定的 Shader 路径(代码位于 BoxApp.cpp 第 354 行):

mvsByteCode = d3dUtil::CompileShader(L"Shaders\color.hlsl", nullptr, "VS", "vs_5_0");
mpsByteCode = d3dUtil::CompileShader(L"Shaders\color.hlsl", nullptr, "PS", "ps_5_0");

这里简单地将上面的路径修改一下即可:

// 修改后
mvsByteCode = d3dUtil::CompileShader(L"..\Shaders\color.hlsl", nullptr, "VS", "vs_5_0");
mpsByteCode = d3dUtil::CompileShader(L"..\Shaders\color.hlsl", nullptr, "PS", "ps_5_0");

0x05 最终运行


在解决了上面的错误之后,不出意外的话,再次点击 Start Debugging(开始调试) ,项目就应该可以成功运行 Box 演示程序了。

ps:示例按住鼠标左键可以旋转正方体,按住鼠标右键可以放大缩小正方体。

转:

DX12龙书 00 - 环境配置:通过 Visual Studio 2019 运行示例项目

--Posted from Rpc



这里给大家推荐一个在线软件复杂项交易平台:米鼠网 https://www.misuland.com

米鼠网自成立以来一直专注于从事软件项目人才招聘软件商城等,始终秉承“专业的服务,易用的产品”的经营理念,以“提供高品质的服务、满足客户的需求、携手共创双赢”为企业目标,为中国境内企业提供国际化、专业化、个性化、的软件项目解决方案,我司拥有一流的项目经理团队,具备过硬的软件项目设计和实施能力,为全国不同行业客户提供优质的产品和服务,得到了客户的广泛赞誉。



如有侵权请联系邮箱(service@misuland.com)

猜你喜欢

评论留言