【鸡渣饲料系列】《Introdution to 3D Game Programming With DirectX11》 代码转移至vs2015
《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的更多相关文章
- Introdution to 3D Game Programming With DirectX11 第11章 习题解答
11.1 这道题要注意使用了line strip,由于曾经一直用triangle list,所以在几何渲染的时候easy算错定点描绘的顺序. 贴一些代码,大概就能把这个问题解释清楚了,由于框架还不是特 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 全书总结
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 全书总结 本系列文章中可能有很多翻译有问题或者错误的地方:并且有些章节 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第五章:渲染流水线
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第五章:渲染流水线 学习目标 了解几个用以表达真实场景的标志和2D图像 ...
- 《Focus On 3D Terrain Programming》中一段代码的注释三
取自<Focus On 3D Terrain Programming>中的一段: //--------------------------------------------------- ...
- 《Focus On 3D Terrain Programming》中一段代码的注释二
取自<Focus On 3D Terrain Programming>中的一段: bool CTERRAIN::MakeTerrainFault( int iSize, int iIter ...
- 《Focus On 3D Terrain Programming》中一段代码的注释一
取自<Focus On 3D Terrain Programming>中的一段: //--------------------------------------------------- ...
- webpack4 系列教程(三): 多页面解决方案--提取公共代码
这节课讲解webpack4打包多页面应用过程中的提取公共代码部分.相比于webpack3,4.0版本用optimization.splitChunks配置替换了3.0版本的CommonsChunkPl ...
- Introduction to 3D Game Programming with DirectX 11 翻译--开篇
Direct3D 11简介 Direct3D 11是一个渲染库,用于在Windows平台上使用现代图形硬件编写高性能3D图形应用程序.Direct3D是一个windows底层库,因为它的应用程序编程接 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- Direct12优化
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- Direct12优化 第一章:向量代数 1.向量计算的时候,使用XMV ...
随机推荐
- 面向对象设计模式--策略模式Strategy
策略模式的UML类图(VS2013 C++版本): 策略模式的重点:每个策略对象封装一个算法,有多少个算法就有多少个对象.策略模式的意图是封装算法.要从“抽象不仅面对状态(字段.属性)还面对行为(算法 ...
- (转)用JQuery实现Fix表头表格
本文转载自:http://www.cnblogs.com/evlon/archive/2009/06/12/1502239.html 我的技术要点: 1.用两个表,其中一个是表头,另一个是表格做表体 ...
- Redis报错:WRONGTYPE Operation against a key holding the wrong kind of value 解决处理
首先应该明白报这个错误说明了你用的jedis方法与redis服务器中存储数据的类型存在冲突. 例如:数据库中有一个key的数据存储的是Hash类型的,但是你使用jedis执行数据操作的时候却使用了非H ...
- windows下制作u盘启动的工具
推荐rufus,快捷方便
- 【log】log4j
常用log4j.properties配置文件 log4j.rootLogger = info,console #指定serviceImpl层 日志输出 log4j.logger.com.sms.ser ...
- Oracle11g空表导出方法
今天凌晨在客户现场进行一个Oracle11g的数据库迁移,习惯性的用了exp/imp,然后在新的数据库发现,空表根本没有exp出来,然后查资料,发现了如下信息:[ORACLE 11G在用EXPORT导 ...
- [Freescale]Freescale L3.14.52_1.1.0 yocto build
可参照:http://blog.csdn.net/wince_lover/article/details/51456745 1. Refer to <基于i.mx6处理器的Yocto项目及Lin ...
- System.InvalidOperationException: Sequence contains no elements
foreach (var keyCode in unexpectedKeyCodesDetected) { string unexpected = expectedCapturedKeyCodes.W ...
- PLSQL_闪回操作2_Fashback Version Query
2014-12-09 Created By BaoXinjian
- error-iis-Service Unavailable
Service Unavailable Service Unavailable HTTP Error 503. The service is unavailable.