在Windows 10下配置 DirectX11 + Visual Studio 2017开发环境
前言
开发环境无需配置,但如果还是有闲情雅致的话可以接着看看。
最近想要学习一下DirectX,但在最一开始进行环境配置的时候就折腾了两三天,幸好在国内外(连日本的我都去看了(哭))各种博客以及问答论坛的帮助下,最终还是配置成功了。怀着一股感恩的心情,来将这几天遇到的坑与大家分享一下。
文章基本上是参考这篇博客写的,但做了一些补充,十分感谢博主。
(文章是在刚入门DirectX时写的,想要走一些弯路的话,可以接着往下看;但想要快捷步入DirectX学习的话,推荐去看DirectX11-With-Windows-SDK,里面有配置好的项目,下载下来就可以运行)
坑的简要说明
1.需要重新安装DirectX 11。Win10本身是自带DirectX 12的,关于这一点可以通过如下操作确认:按下Win + R,输入Dxdiag,然后将会运行DirectX诊断工具。但由于未来工作需要使用DirectX 11,虽然Win8自带DirectX 11,但如果不想重装系统的话,就只能继续折腾了。
2.升级到Visual Studio 2017。Introduction to 3D Game Programming with DirectX 11是一本不错的入门DirectX的书,但书中的操作步骤以及示例代码都是基于Visual Studio 2010的,又是由于未来工作需要使用Visual Studio 2017,没办法,接着折腾。由于需要升级到VS 2017,导致了一系列静态库不兼容的问题需要解决。
配置详细过程
准备工作
首先默认你的电脑为Window 10系统,且安装了Visual Studio 2017。
1.下载安装DirectX 11
下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=6812
下载好后,直接按照提示安装即可。但在这之前,如果你的电脑中安装了Microsoft Visual C++ 2010 Redistributable,需要先到控制面板中将其卸载,否则将会出现错误(具体解决方案可以参考这篇博客)。如果你不小心直接安装了且遇到了问题,没关系,卸载好之后再重新安装一遍就好了。
2.下载Introduction to 3D Game Programming with DirectX 11书中的示例代码
下载地址在这篇博客中
示例代码中包含各章的示例程序和一个Common文件夹
3.下载dxerr.lib的替代品
估计很多人在编译示例代码时候可能会遇到HR宏相关的问题,这是因为链接的dxerr.lib与VS2017不兼容的缘故,为此我们需要下载dxerr的源码,下载地址见这篇博客中底部的链接。
下载好后,将其中的dxerr.h和dxerr.cpp放入上一步提到的Common文件夹中。
4.下载并编译生成Effect的静态库
目前我也不知道Effect库的作用,如果有过编译网上一些开源库的经历的话,我们应该知道对于不同的VS版本,不同的平台(x86和x64),不同的编译模式(debug和release模式),所需的静态库也是不一样的。因此我们需要自己编译Effect库来替换Common文件夹中提供的VS 2010版本的静态库。
这个过程并不复杂:首先下载Effect库的源码,解压后可以看到里面有各种平台各种VS版本的解决方案,我们选择Effects11_2017_Win10.sln并用Visual Studio 2017打开,然后F7直接生成(注意这里的编译模式要和你后面运行的示例的编译模式一致,本文这里就选择了Debug Win32(x86)模式)
生成成功后,找到刚刚下载的文件夹中的Bin目录,从里面找到Effects11d.lib并复制到Common文件夹中。
5.类似于第三步,我们还需要一个用来加载纹理的库DDSTextureLoader,下载好后,将其中的DDSTextureLoader.h/cpp放置到Common文件夹下。
运行示例代码
准备工作基本完成,下面以书中示例代码第九章的BlendDemo为例,我们来检查一下我们是否配置成功。
1.打开VS 2017,用Windows桌面向导新建一个空的Windows应用程序。
2.设置项目属性:将Common的路径设置为加入到包含目录,将Effects11d.lib的目录设置为库目录,注意这里不要按照书中的步骤,将DirectX11 SDK目录中的include和lib路径加入进去。
在附加依赖项中加入如下静态库的名称:d3dcompiler.lib,Effects11d.lib,d3d11.lib,dxgi.lib,dxguid.lib
3.添加示例代码:找到下载的示例代码第九章的BlendDemo,将下列.h和.cpp文件复制到当前项目的工作目录中,然后将FX和Textures两个文件夹也复制过来。
在VS2017的解决方案资源管理器视图中将上述.h和.cpp文件通过添加现有项添加到项目中来,然后新建一个Common筛选器,将我们前面准备的Common文件夹中的.h和.cpp文件添加进来,并排除xnacollision.cpp和xnacollision.h。接着再新建一个FX筛选器,将FX文件夹中的文件添加进来,最后的目录看起来应该是这样:
4.我们接下来先生成一下项目,会发现会有好多错误,没关系参考了大佬的博客,我们来做一些处理:
(1)移除代码中的#include <d3dx11.h>
(2)添加#include "DDSTextureLoader.h"到 d3dUtil.h
(3)替换#include <xnamath.h>为#include <DirectXMath.h>和#include <DirectXPackedVector.h>
(4)将关键字D3DX11INLINE替换为C++关键字inline
(5)遇到一些未定义的标识符,比如XMVector,XMMatrixTranspose时,在文件顶部添加命名空间:
using namespace DirectX;
using namespace DirectX::PackedVector;
(6)如遇到找不到entrypoint的问题,则可以右击FX中的两个文件,设置属性,将项类型改为不参与生成。这里还需要解决一个问题,就是编译Basic.fx,生成Basic.fxo,我目前还不会,只好先复制了别人编译好的文件到FX中。(2019.01.07更新,经过大佬指点,知道了Basic.fxo的生成方法:在我们下载的DirectX SDK的安装目录下面,有一个fxc.exe可执行文件,我们用win + R打开命令行并进入fxc.exe所在的目录,方便起见,我们先把Basic.fx和LightHelper.fx两个文件复制到fxc.exe所在的目录下,然后在命令行中运行如下命令fxc /Fc /Od /Zi /T fx_5_0 Basic.fx /Fo Basic.fxo,然后检查一下会发现当前目录下生成了我们需要的Basic.fxo和Basic.cod)
(7)(2019.01.07更新)在项目属性中将字符集改为Unicode
不出意外的话,运行一下应该就可以看到如下画面了。
一些可能有些帮助的资料
DirectX资源下载
Direct3D 11 Book Demos with Windows 10 and Visual Studio 2015
在Windows 10下配置 DirectX11 + Visual Studio 2017开发环境相关推荐
- DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建
DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建 DCMTK 362MD支持库与Microsoft Visual Studio 2017开发 ...
- Windows 10 下基于WSL的开源飞控开发环境配置(Ardupilot/PX4)
目录 0 环境 1 环境概述 2 配置 WSL 2.1 安装 WSL2 2.2 安装工具链 3 配置VS Code 0 环境 Windows 10 build version >= 18917 ...
- 【错误记录】Ubuntu 中 ROOT 用户无法启动 Visual Studio Code 开发环境 ( 推荐在普通用户下使用 VSCode 开发环境 )
文章目录 一.报错信息 二.解决方案 一.报错信息 在 [开发环境]Ubuntu 安装 Visual Studio Code 开发环境 ( 下载 Visual Studio Code 安装器 | Ub ...
- Microsoft Visual Studio C++开发环境的配置及使用
Microsoft Visual Studio C++开发环境的配置及使用 本文引用自作者编写的下述图书; 本文允许以个人学习.教学等目的引用.讲授或转载,但需要注明原作者"海洋饼干叔 叔& ...
- 使用Visual Studio 2017开发Windows UWP应用
使用Visual Studio 2017开发Windows UWP应用 今天开始学习Windows UWP应用开发 学习的视频资料来自Bilibili上"微软信仰中心"添加翻译字幕 ...
- 打造TypeScript的Visual Studio Code开发环境
打造TypeScript的Visual Studio Code开发环境 本文转自:https://zhuanlan.zhihu.com/p/21611724 作者: 2gua TypeScript是由 ...
- vscode linux新建c语言,Ubuntu16.04下配置VScode的C/C++开发环境
1. Vscode安装 Visual studio code是微软发布的一个运行于 Mac OS X.Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器.第一种 ...
- 如何用 Visual Studio 2017 开发 Arduino 应用程序
如何用 Visual Studio 2017 开发 Arduino 应用程序 使用Visual Studio 2017 开发 Arduino 应用程序需要两个软件: Visual Studio Vis ...
- windows 7下同时安装visual studio 2012和2010
2019独角兽企业重金招聘Python工程师标准>>> 最进想试一试Visual Studio 2012咋样原来安装了2010版的,好使,就是主题背景不太友好.2012中加入了深色背 ...
- 驱动开发:配置Visual Studio驱动开发环境
在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境,首先我们需要安装Visual Studio 2013这款功能强大的程序开发工具,在课件内请双击ISO文件并运行内部的vs_ultimate.ex ...
最新文章
- oracle dataguard
- 在shell脚本中没有换行符的#39;echo#39;
- 仿苹果手机闹钟_原来iPhone自带的闹钟这么好用,以前没发现,现在一直在用
- 【商业落地篇】Gartner第四范式全球首发AutoML系列白皮书(限时免费下载)
- elasticsearch按照配置时遇到的一些坑 [Failed to load settings from [elasticsearch.yml]]
- cacls文件服务器备份与恢复,实战安全设置WEB专用服务器技巧
- 那些关于浏览器的趣图和幽默段子
- 无法创建t的通用数组_创建通用数组的问题
- 〖谷腾读书会GTC〗Digital economy
- 洛阳市高中学业水平计算机考试,2019年河南洛阳市高中学生学业水平考试考点及时间...
- ajax跨域请求wcf,ajax wcf 指定某个域名 进行跨域访问
- 教孩子学编程python pdf_教孩子学编程 PYTHON语言版 PDF_IT教程网
- 奇兔recovery卡刷教程_奇兔刷机小编为你详解recovery界面中的功能
- 这100 个网络基础知识,看完成半个网络高手
- Component属性
- python实现爬取东方财富网
- 自然语言处理4——TF-IDF及特征提取
- 解读先电2.4 iaas-install-nova-{controller,comput}.sh 脚本
- Excel表格的函数和必学的五个小技巧
- 学习笔记11--自动驾驶汽车整体架构
热门文章
- 如何申请成为企业微信,并成为第三方服务商
- 关于电源线 USB台灯3C认证相关介绍
- Gauss-Seidel迭代法解线性方程组
- html图片的title,图片标签IMG内alt和title属性
- 空手套白狼的典型案例,不花一分钱,整合别家产品,赚自己的钱
- 考试大纲-青少年软件编程等级考试Scratch1-4级
- vulstack2(hydra爆mssql、免杀360、cs、msf渗透、weblogic、computer brower服务支持6118,域管密码过期kerberos认证错误导致部分域服务不可用)
- 智能电视或将掀起IT产业新一轮狂潮
- 多频子量子计算机,量子计算机研究:纠错和容错计算
- 知识图谱多跳问答推理研究进展、挑战与展望