Visual studio 2013 DirectX 11&;Windows SDK:有针对Windows 7的现代项目设置教程吗?

Visual studio 2013 DirectX 11&;Windows SDK:有针对Windows 7的现代项目设置教程吗?,visual-studio-2013,windows-7,directx-11,Visual Studio 2013,Windows 7,Directx 11,注意:我只想说,一开始我尝试了我能找到的关于这个主题的所有东西(MSDN、堆栈溢出、D3DCoder等),但没有成功(解决一个问题后,另一个错误正在等待我)。所以我在这里发帖纯粹是为了降低我的积极性(是的,已经有类似的帖子了,但是没有一篇真正帮助了我) 事情是这样的: 几个月前,我决定纯粹出于好奇开始学习现代OpenGL,在阅读了OpenGL的缺点之后,我最终决定改用DirectX(我也只是针对Windows平台)。我认为这是我做过的最糟糕的举动之一:我听说OpenGL缺少文档,第三方库的一切都

注意:我只想说,一开始我尝试了我能找到的关于这个主题的所有东西(MSDN、堆栈溢出、D3DCoder等),但没有成功(解决一个问题后,另一个错误正在等待我)。所以我在这里发帖纯粹是为了降低我的积极性(是的,已经有类似的帖子了,但是没有一篇真正帮助了我)

事情是这样的:

几个月前,我决定纯粹出于好奇开始学习现代OpenGL,在阅读了OpenGL的缺点之后,我最终决定改用DirectX(我也只是针对Windows平台)。我认为这是我做过的最糟糕的举动之一:我听说OpenGL缺少文档,第三方库的一切都乱七八糟,但我意识到DirectX比OpenGL看起来更糟糕。事实上,尝试使用Windows 7和VS2013在现代DirectX 11中编写代码只是一种痛苦(尤其是着色器),而将其全部弄清楚所需的时间只是浪费时间。在阅读了大量关于MSDN的移植文章后,我仍然不知道该做什么,以及如何在Windows7中设置一个完全工作的现代项目。具体来说,5(/5_0)着色器模型(已弃用)与新的Effects11库(未弃用)相结合是最让我困惑的事情

顺便说一句,我目前正在阅读Frank Luna关于这个主题的最新书籍(“Direct3D 11 3D游戏编程入门”),但我仍然无法让他的示例工作(即使使用DirectX SDK)。另外,我不知道我所学到的东西是否相关,因为他是在Windows SDK转换之前写的。供您参考,我试图用他的示例(对于了解这本书的人)解决的最新错误是来自D3DX11CreateEffectFromMemory函数(在运行时)的E_NOINTERFACE:

尽管如此,我想知道的是:

  • 关于如何使用VS2013在Windows 7中设置现代DirectX 11项目,是否有清晰的分步教程,或者它仍处于alpha前期(只是开玩笑)
  • 着色器模型、HLSL编译器和.fx文件的实际情况如何?应该使用什么(我到处听说它已被弃用,但似乎还没有替代品)
  • 对于那些了解这本书的人来说,有没有关于如何构建旧的DirectX SDK示例而不出现这种愚蠢的运行时错误的想法

  • 非常感谢

    E_NOINTERFACE
    在这种情况下是一个常见的错误,因此可能是问题中没有显示的代码有问题

    您仍然可以在VS 2013中使用传统的DirectX SDK,但它所采用的过程与VS 2010中使用的过程略有不同。在
    VC++目录中
    将可执行文件设置为
    $(ExecutablePath)$(DXSDK_DIR)Utilities\bin\x86
    $(ExecutablePath)$(DXSDK_DIR)Utilities\bin\x64$(DXSDK_DIR)Utilities\bin\x86
    ,包含到
    $(IncludePath)$(DXSDK_DIR)包括
    ,以及库到$(LibraryPath)$(DXSDK_DIR)Lib\x86或
    $(LibraryPath)$(DXSDK_DIR)Lib\x64
    。阅读此操作的其他详细信息。我还为那本书做了一些笔记

    实际上,您不需要传统的DirectX SDK,但您可能会发现现在使用该书更容易做到这一点。VS 2013附带了Windows 8.1 SDK,其中包含DirectX 11和D3DCompile 47的所有操作系统头

    您可以使用来创建一个简单的示例,即使用设备、交换链和窗口设置Win32桌面应用程序(即在Windows 7上运行的应用程序)。这不使用传统的DirectX SDK

    您还可以使用一些附加功能。有关添加的说明位于CodePlex wiki的Documentation/Effects 11/添加到VS解决方案下

    关于FX与not的问题也包含在CodePlex:和中。还有

    许多较旧的DirectX SDK示例已重新发布到MSDN代码库,不需要构建旧的DirectX SDK。您应该阅读以下文章了解各种DirectX SDK的命运:

    使用Windows应用商店应用程序/Windows phone 8.x aps学习DirectX 11的故事更清晰,并且得到VS模板和MSDN文档的良好支持。Win32桌面应用程序当然是一个完全合理的选择,但你必须通过一些研究来区分传统和现代。您仍然可以从VS中的标准Win32桌面应用程序项目模板开始


    注意:默认情况下,Windows仅支持OpenGL v1.5软件渲染器。您必须安装第三方ICD才能获得任何其他内容,并且没有OpenGL VS模板。

    如果您使用VS 2013进行Win32桌面开发,您还可以使用NuGet软件包管理器安装Effects 11。看见
    HR(D3DX11CreateEffectFromMemory(compiledShader->GetBufferPointer(), compiledShader-   >GetBufferSize(), 
        0, md3dDevice, &mFX));
    
    // Done with compiled shader.
    ReleaseCOM(compiledShader); -> crash here