代码之家  ›  专栏  ›  技术社区  ›  Toji

Direct3D 11效果文件已弃用?

  •  18
  • Toji  · 技术社区  · 14 年前

    在D3D11中,所有的效果(.fx)支持都已从D3DX库中删除,并隐藏在一个很难找到(当然,文档很少)的共享源代码库中。所包含的示例中没有一个使用它,而是倾向于直接编译HLSL文件。所有这些都告诉我,微软正试图让人们停止使用效果文件格式。是真的吗?是否有任何文件表明?无论哪种方式我都可以,但多年来他们一直在推广.fx格式,所以突然决定放弃它似乎很奇怪。

    5 回复  |  直到 14 年前
        1
  •  4
  •   Magnus Österlind    14 年前

    我也处在同样的位置,在疯狂地搜索了使用D3DX11CreateEffectFromMemory的最简单的示例之后,我也得出了这样的结论:支持.fx文件并不是他们的最高优先级。尽管奇怪的是他们添加了EffectGroup概念,这是11的新概念,如果他们不想让我们使用它的话。

    我已经对新的反射API做了一点介绍,所以看起来很容易把你自己的函数拼凑在一起设置变量等,本质上是创建你自己的效果类,下一步就是看看它们对通过API创建渲染状态块的支持。能够直接在.fx文件中编辑这些内容非常好,所以希望类似的内容仍然存在(或者,最坏的情况下,我可以从Effect11代码中删除这部分内容)。

        2
  •  5
  •   Jesse    14 年前

    许多专业游戏和图形开发人员不使用Direct3D中的效果界面,许多主流游戏引擎也不使用它们。相反,自定义材质/效果子系统构建在较低级别的着色器和图形状态管理设施之上。这使得开发人员可以通过一个公共的资产管理管道来实现Direct3D和OpenGL的目标。

        3
  •  4
  •   Chuck Walbourn    6 年前

    主要问题是,HLSL编译器团队不赞成使用fx_5_0概要文件来编译带有所需元数据的Effects 11着色器。运行时是 shared-source ,但编译器不是。在最新的D3DCompiler(#47)中,它会发出一个警告。在DirectX 11.1和11.2中,fx_5_0从未针对某些较新的语言特性进行过更新,但在Direct3D 11中“按原样”工作。

    从技术上讲 由于D3DCompile#47是操作系统的一部分,并且包含对fx#5#0的“已弃用/原样”编译器支持,因此现在可以将Effects 11与Windows应用商店应用程序(适用于Windows 8.1和Windows phone 8.1)一起使用,但不鼓励使用此功能。

    大部分DirectX SDK示例和所有Windows应用商店示例都避免使用Effects 11 GitHub

    所以简而言之,是的,你被劝阻使用它,但你仍然可以在目前,如果你可以接受免责声明。

        4
  •  1
  •   Laserallan    12 年前

    DirectX SDK中提供了一个effect运行时作为示例,它应该能够帮助您使用.fx文件。 检查目录:%DXSDK\u DIR%\Samples\C++\Effects11

    推荐文章
    Nacho  ·  DX12描述符堆管理
    7 年前