Dx11龙书--BoxDemo执行成功

Introduction to 3D Game Programming with DirectX 11

以这本书的提示开始了尝试。。。(尝试内容是开篇的环境配置,DemoBox.cpp那个)


问题一: fxc.exe已退出  or 入口点问题

       项目属性--HLSL编译器--常规--着色器类型设为fx,着色器模型设为fx 5.0,同时入口点改为WinMain。

      同时检查下.fx文件的属性,配置属性--常规--从生成中排除---否,项类型---HLSL编译器,否则此fx文件会被跳过。


问题二:过时的Common文件夹

    描述:作者给出的Common文件夹中的Effects11.lib和Effects11d.lib是为当时的Effect 11框架配套编译的(且适合vs2010来用),我所用的Win8.1(且IDE是vs2013)使用这两个lib有问题    (在于_MSC_VER_宏值为1800与1600不对应)

    解决:http://download.csdn.net/download/u011873969/8032051,有好心人给出了vs2013配套可用更新过的lib,可以用这个Common文件夹成功编译。但是程序运行时出现问题三。  

 如果使用的非VS2013,请自行编译effect框架,具体方法很多blog都有写,这里不再指出。


Dx11龙书--BoxDemo执行成功_第1张图片

问题三:CreateEffectFromMemory函数    // 问题一解决的话,问题三将不再出现

   描述:难以下手的问题,需要大量补充dx的知识。经过调试,这个函数的参数上面不正常,指针居然成了空指针。。详见下图:


做个问题记录等以后懂dx再来研究。


另外有相同问题的朋友,提供给你们几个可能有帮助的链接:

https://msdn.microsoft.com/en-us/library/windows/desktop/ff476273(v=vs.85).aspx

http://xboxforums.create.msdn.com/forums/p/87793/526930.aspx

http://stackoverflow.com/questions/16642989/dx11-unresolved-externals

互相学习!





----------------------------------------------------------------------------------------------------------------

现在知道原因了,CreateEffectFromMemory函数填写的实参&mFX为空导致错误的原因是fx文件没调用成功fxc.exe对它编译。

当时我跳过了HLSL编译!!后来忘了这码事。。按问题一调试,问题三就不会出现了

根据CreateEffectFormFile函数的参数fx_5_0可知,项目属性--HLSL编译器--常规--着色器类型设为fx,着色器模型设为fx 5.0,同时入口点改为WinMain。  // vs2013下

同时检查下.fx文件的属性,配置属性--常规--从生成中排除---否,项类型---HLSL编译器,否则此fx文件会被跳过。

成功编译.fx文件后,实参&mFX就成功指向fx文件编译出的数据地址了:)


其他可能还有些小问题,但都不难分析,比如无法解析的外部符号肯定是这个库没加载成功,那么检查库有没有问题,路径对不对,link的输入里面有没有写对。。

共勉~




你可能感兴趣的:(Dx11龙书--BoxDemo执行成功)