惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
J
Java Code Geeks
L
LangChain Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
B
Blog
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog

博客园 - neoragex2002

Win32 CMD批处理命令 Source Insight小技巧:修改Symbol Window的默认宽度 Visual Studio 2015 msvsmon.exe crashed when c++ debugging with x64 高级屏幕空间反射: Screen Space Reflection (SSSR) 高级屏幕空间反射: Screen Space Reflection (SSR) SVO实时全局光照优化(里程碑MK2):Sparse Voxel Octree based Global Illumination (SVO GI) SVO实时全局光照优化(里程碑MK0):Sparse Voxel Octree based Global Illumination (SVO GI) SVO实时全局光照:中等规模场景的GI实现 SVO实时全局光照:Sparse Voxel Octree based Global Illumination (SVO GI) Windows 10开启默认网络驱动器访问 Spectrum to XYZ to sRGB H-Basis/SG/SH GI Relighting HQ-SSAO (High-Quality SSAO) 安装astrixx firefox插件 Approx Analytic Arealight 一次性将多个文件夹批处理压缩成多个.rar Xbox One手柄 + Xbox Wireless Adapter PC无线适配器驱动安装、配对全流程 PX4/PixHawk无人机飞控应用开发 Clustered Shading架构实现步骤
传统D3D11程序面向VS2015编译环境的配置修正细节
neoragex2002 · 2016-01-04 · via 博客园 - neoragex2002

A.  配置细节

  • 使用#include <unordered_map>替代<hash_map>
    • 这个是c++标准建议的,没啥好说的
  • 使用#include <directxmath.h>替代<xnamath.h>
    • 注意:如不想修改原xnamath代码,则需在包含directxmath.h之前定义_XM_NO_INTRINSICS_宏标志,以与原xnamath代码兼容
    • 然而,_XM_NO_INTRINSICS_标志将指示directxmath不使用SSE/SSE2等增强型指令集,因此其数学实现极慢。如果想速度快,还是得去掉该标志,并相应地重写原xnamath代码为妥
  • 去除d3dx11,不再使用任何legacy DX SDK中的头文件或lib,坚持使用win SDK 8.0
    • 这个是保障vs2015能够顺利编译链接、并且避免后继编译链接配置混乱的关键
    • 去除项目设置中legacy DX SDK相关的include、lib路径定义
    • 去除链接设置中legacy DX SDK相关的lib依赖,包括d3dx11.lib、dxerr.lib等;这些lib不要写在项目工程的linker inputs里面,用#pragma comment写在头文件里面
  • 针对d3dx11,使用DirectXTex库来进行替代;DirectXTex lib需用vs2015重新编译
    • 注意:DirectXTex库的API较d3dx11的API形式上变化极大,如纹理加载API等。所有d3dx11相关的代码均可能需要重写,这块是最大的工作量
  • 针对dxerr,可找到其源码.cpp/h,将其直接包含进项目,一起编译
    • 注意:不能再使用legacy dx sdk中的dxerr.lib,因其使用了过时的库,因此在vs2015中无法link
    • 在直接包含编译dxerr.h/cpp的同时,可能会碰到若干预定义标志重定义,得自己手工调整一下
    • 在#include <dxerr.h>之前,需添加#include <Mmreg.h>定义
  • 针对effect11,其lib需用vs2015重新编译
    • 为提升STL调试时效率,可将_HAS_ITERATOR_DEBUGGING、_SECURE_SCL编制标志设置为0,关闭迭代子调试功能;注意:在编译directxTex、effect11等外部lib时,也必须设置上述标志,否则无法link
  • 针对d3d_compiler,可直接使用win sdk 8自带的lib
    • 注意:d3d_compiler.lib会运行时调用d3dcompiler_XX.dll(xx是版本号),需要将这个dll拷贝到系统目录或程序当前目录下,以便运行时能够加载
    • 注意:这个dll在win sdk 8的bin目录里面有,但有x32、x64两个版本,在拷贝dll时千万别拷错了版本,否则运行时崩溃(0xc000007b Error)

B.   参考文献

  1. http://blogs.msdn.com/b/chuckw/
  2. http://blogs.msdn.com/b/chuckw/archive/2012/04/24/where-s-dxerr-lib.aspx
  3. http://blogs.msdn.com/b/chuckw/archive/2013/08/21/living-without-d3dx.aspx
  4. http://blogs.msdn.com/b/chuckw/archive/2015/08/05/where-is-the-directx-sdk-2015-edition.aspx
  5. https://github.com/Microsoft/DirectXTex/wiki/DirectXTex
  6. https://github.com/Microsoft/DirectXTK/wiki
  7. https://github.com/Microsoft/DirectXMesh/wiki
  8. https://github.com/Microsoft/FX11/wiki
  9. https://msoos.wordpress.com/2010/09/11/0xc000007b-error-solution/

posted @ 2016-01-04 00:54  neoragex2002  阅读(3093)  评论()    收藏  举报