前言

开发环境无需配置,但如果还是有闲情雅致的话可以接着看看。

最近想要学习一下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开发环境相关推荐

  1. DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建

    DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建 DCMTK 362MD支持库与Microsoft Visual Studio 2017开发 ...

  2. Windows 10 下基于WSL的开源飞控开发环境配置(Ardupilot/PX4)

    目录 0 环境 1 环境概述 2 配置 WSL 2.1 安装 WSL2 2.2 安装工具链 3 配置VS Code 0 环境 Windows 10 build version >= 18917 ...

  3. 【错误记录】Ubuntu 中 ROOT 用户无法启动 Visual Studio Code 开发环境 ( 推荐在普通用户下使用 VSCode 开发环境 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 [开发环境]Ubuntu 安装 Visual Studio Code 开发环境 ( 下载 Visual Studio Code 安装器 | Ub ...

  4. Microsoft Visual Studio C++开发环境的配置及使用

    Microsoft Visual Studio C++开发环境的配置及使用 本文引用自作者编写的下述图书; 本文允许以个人学习.教学等目的引用.讲授或转载,但需要注明原作者"海洋饼干叔 叔& ...

  5. 使用Visual Studio 2017开发Windows UWP应用

    使用Visual Studio 2017开发Windows UWP应用 今天开始学习Windows UWP应用开发 学习的视频资料来自Bilibili上"微软信仰中心"添加翻译字幕 ...

  6. 打造TypeScript的Visual Studio Code开发环境

    打造TypeScript的Visual Studio Code开发环境 本文转自:https://zhuanlan.zhihu.com/p/21611724 作者: 2gua TypeScript是由 ...

  7. vscode linux新建c语言,Ubuntu16.04下配置VScode的C/C++开发环境

    1. Vscode安装 Visual studio code是微软发布的一个运行于 Mac OS X.Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器.第一种 ...

  8. 如何用 Visual Studio 2017 开发 Arduino 应用程序

    如何用 Visual Studio 2017 开发 Arduino 应用程序 使用Visual Studio 2017 开发 Arduino 应用程序需要两个软件: Visual Studio Vis ...

  9. windows 7下同时安装visual studio 2012和2010

    2019独角兽企业重金招聘Python工程师标准>>> 最进想试一试Visual Studio 2012咋样原来安装了2010版的,好使,就是主题背景不太友好.2012中加入了深色背 ...

  10. 驱动开发:配置Visual Studio驱动开发环境

    在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境,首先我们需要安装Visual Studio 2013这款功能强大的程序开发工具,在课件内请双击ISO文件并运行内部的vs_ultimate.ex ...

最新文章

  1. oracle dataguard
  2. 在shell脚本中没有换行符的#39;echo#39;
  3. 仿苹果手机闹钟_原来iPhone自带的闹钟这么好用,以前没发现,现在一直在用
  4. 【商业落地篇】Gartner第四范式全球首发AutoML系列白皮书(限时免费下载)
  5. elasticsearch按照配置时遇到的一些坑 [Failed to load settings from [elasticsearch.yml]]
  6. cacls文件服务器备份与恢复,实战安全设置WEB专用服务器技巧
  7. 那些关于浏览器的趣图和幽默段子
  8. 无法创建t的通用数组_创建通用数组的问题
  9. 〖谷腾读书会GTC〗Digital economy
  10. 洛阳市高中学业水平计算机考试,2019年河南洛阳市高中学生学业水平考试考点及时间...
  11. ajax跨域请求wcf,ajax wcf 指定某个域名 进行跨域访问
  12. 教孩子学编程python pdf_教孩子学编程 PYTHON语言版 PDF_IT教程网
  13. 奇兔recovery卡刷教程_奇兔刷机小编为你详解recovery界面中的功能
  14. 这100 个网络基础知识,看完成半个网络高手
  15. Component属性
  16. python实现爬取东方财富网
  17. 自然语言处理4——TF-IDF及特征提取
  18. 解读先电2.4 iaas-install-nova-{controller,comput}.sh 脚本
  19. Excel表格的函数和必学的五个小技巧
  20. 学习笔记11--自动驾驶汽车整体架构

热门文章

  1. 如何申请成为企业微信,并成为第三方服务商
  2. 关于电源线 USB台灯3C认证相关介绍
  3. Gauss-Seidel迭代法解线性方程组
  4. html图片的title,图片标签IMG内alt和title属性
  5. 空手套白狼的典型案例,不花一分钱,整合别家产品,赚自己的钱
  6. 考试大纲-青少年软件编程等级考试Scratch1-4级
  7. vulstack2(hydra爆mssql、免杀360、cs、msf渗透、weblogic、computer brower服务支持6118,域管密码过期kerberos认证错误导致部分域服务不可用)
  8. 智能电视或将掀起IT产业新一轮狂潮
  9. 多频子量子计算机,量子计算机研究:纠错和容错计算
  10. 知识图谱多跳问答推理研究进展、挑战与展望