《Introdution to 3D Game Programming With DirectX11》我是从这本书学习的directx,被称为“龙书”dx11版,由于是通过这本书学习的所以自己的代码也是按书上的套路来的,环境是directxSDK+vs2010。但是现在已经是VS2015了,然后就想换为win10sdk+vs2015,然而这么一换就开始各种报错了,然后网上搜解决办法,能搜到的都是老外遇到的各种问题,中文的东西一点没有,参照stackoverflow和msdn上有关内容,弄了很久才能让代码在vs2015上编译连接通过。个人觉得对新手来说(如菜渣我)这个转移过程还是挺不容易搞定的,所以就想把这个过程写出来吧,当个傻瓜教程......

至于升级环境的目的,首先是得跟紧微软爸爸的脚步对吧,然后是VS2010对于C++11的特性很多都不支持,以及我的vs2010装不上shader编写的代码高亮的插件,写shader时候简直蛋疼死,并且directxSDK从2010版本开始就停止更新了,不支持dx11.1,11.2,和12的内容,所以升级了环境还是比较好的。

想转到vs2015,首先要安装windows的sdk,我用的是win10的。然后在vs2015中打开项目并且升级,这时如果直接build的话应该是有提示缺少‘main entry’的错误,这个需要点项目属性->HLSL编译器,其中着色器类型改为“效果”,着色器模型改为Shader Model 5.0。还需要将$(WindowsSDK_IncludePath)和$(WindowsSDK_LibraryPath_x86)加入项目包含目录和库目录并上移至顶,不然可能会有一些很奇怪的错误(应该是由于路径中有重复不同版本文件导致的)。再build的话应该是有关于effects11.lib的错误,这个是effects框架版本的问题,需要去https://fx11.codeplex.com/这里下载最新版的effects代码自己在vs2015中编译生成dubug和release版本的lib文件并替换之前的老文件(common文件夹中)。然后应该是关于dxerr.lib的错误,dxerr貌似也是在新版本dx中被去除了,本来和effects一样应该是有升级版的但现在貌似被整合到新版DXUT中去了,但实际上书中对dxerr的应用就是使用了一个dxtrace函数,dx的错误能够通过它显示出来,(但应该是程序规模较小的原因我至今也没见过它报出来的错)由于我也暂时没找到替代它的方法,所以就暂时简单的将HR宏里的内容去掉了。这时应该能在vs2015中运行了。

不过这只是暂时解决方案,因为还是要用到dxsdk,下一步的目标应该是换掉代码中Effects框架、D3DX有关的东西以及将xnamath用directxmath替换等等,彻底去掉对dxsdk的依赖,对于dxtrace的替代也要再找找。

【鸡渣饲料系列】《Introdution to 3D Game Programming With DirectX11》 代码转移至vs2015的更多相关文章

  1. Introdution to 3D Game Programming With DirectX11 第11章 习题解答

    11.1 这道题要注意使用了line strip,由于曾经一直用triangle list,所以在几何渲染的时候easy算错定点描绘的顺序. 贴一些代码,大概就能把这个问题解释清楚了,由于框架还不是特 ...

  2. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 全书总结

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 全书总结 本系列文章中可能有很多翻译有问题或者错误的地方:并且有些章节 ...

  3. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第五章:渲染流水线

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第五章:渲染流水线 学习目标 了解几个用以表达真实场景的标志和2D图像 ...

  4. 《Focus On 3D Terrain Programming》中一段代码的注释三

    取自<Focus On 3D Terrain Programming>中的一段: //--------------------------------------------------- ...

  5. 《Focus On 3D Terrain Programming》中一段代码的注释二

    取自<Focus On 3D Terrain Programming>中的一段: bool CTERRAIN::MakeTerrainFault( int iSize, int iIter ...

  6. 《Focus On 3D Terrain Programming》中一段代码的注释一

    取自<Focus On 3D Terrain Programming>中的一段: //--------------------------------------------------- ...

  7. webpack4 系列教程(三): 多页面解决方案--提取公共代码

    这节课讲解webpack4打包多页面应用过程中的提取公共代码部分.相比于webpack3,4.0版本用optimization.splitChunks配置替换了3.0版本的CommonsChunkPl ...

  8. Introduction to 3D Game Programming with DirectX 11 翻译--开篇

    Direct3D 11简介 Direct3D 11是一个渲染库,用于在Windows平台上使用现代图形硬件编写高性能3D图形应用程序.Direct3D是一个windows底层库,因为它的应用程序编程接 ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- Direct12优化

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- Direct12优化 第一章:向量代数 1.向量计算的时候,使用XMV ...

随机推荐

  1. 关于checkbox的attr无效的问题

    jq用了10版本的,一直发现attr无效,查找良久,由同事帮忙解决该问题,感谢. 特记录下该问题. 由于 新版本attr换成了prop的问题. $("input[name='delIds'] ...

  2. 剑指offer系列22--二叉树中和为某一值的路径

    22[题目]输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径. * 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径 * [思路]只要从根结点到叶结点一条一条遍 ...

  3. C++的头文件和实现文件分别写什么

    在C++编程过程中,随着项目的越来越大,代码也会越来越多,并且难以管理和分析.于是,在C++中就要分出了头(.h)文件和实现(.cpp)文件,并且也有了Package的概念. 对于以C起步,C#作为& ...

  4. 利用mtd工具实现嵌入式设备在线升级

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   主要思路是:通过web post方式将升级文件交给CGI程序处理,然后通过mtd工具实现设备在线升级. 1.页面部分 & ...

  5. extern 修饰符

    extern(C# 参考) extern 修饰符用于声明在外部实现的方法. extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 特性一起使用.在这种情况 ...

  6. apache部署多个项目

    配置多个ip 简单的说,打开httpd.conf 在最后加入如下内容: <VirtualHost 127.0.0.2:80> DocumentRoot d:/AppServ/www2 Se ...

  7. (C#) 设定时间格式

    private string GetCurrentDateTime() { return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") ...

  8. POJ-3461 Oulipo(KMP,模式串在主串中出现次数)

    题意:给你两个字符串p和s,求出p在s中出现的次数. 显然,我们要先把模式串放到前面,之后主串放后面,中间隔开,这样就可以根据前缀数组的性质来求了. 我先想直接把p接到s前面,之后求Next数组对st ...

  9. DirFile

    using System; using System.Text; using System.IO; namespace MyListen { /// <summary> /// 文件操作夹 ...

  10. SpringMVC静态资源处理[转]

    SpringMvc配置DispatchServlet对所有请求进行过滤: <servlet> <servlet-name>mvc-dispatcher</servlet- ...