Directx 编译着色器的ABC方法

Directx 编译着色器的ABC方法,directx,shader,Directx,Shader,我发誓我一直在寻找这个问题的答案,但我没有找到真正的解决办法。这是什么问题 我是DirectX和着色器的新手。关于着色器,我仍然不了解一些东西 1-如何制作着色器?我必须在项目中创建.fx文件吗?有时是这样,但在某些示例中,我找不到任何.fx文件。我如何制作这个文件?我的Visual Studio版本无法直接创建.fx文件;我必须“强制”文件为.fx 2-我如何编译它们?它们是在我编译解决方案的同时编译的,还是有特殊的编译方法 3-附近有好的教程吗?我一直在寻找一本shaders圣经,但大多数时

我发誓我一直在寻找这个问题的答案,但我没有找到真正的解决办法。这是什么问题

我是DirectX和着色器的新手。关于着色器,我仍然不了解一些东西

1-如何制作着色器?我必须在项目中创建.fx文件吗?有时是这样,但在某些示例中,我找不到任何.fx文件。我如何制作这个文件?我的Visual Studio版本无法直接创建.fx文件;我必须“强制”文件为.fx

2-我如何编译它们?它们是在我编译解决方案的同时编译的,还是有特殊的编译方法

3-附近有好的教程吗?我一直在寻找一本shaders圣经,但大多数时候,我发现模糊的、简短的教程很少解释一些事情,而且从来没有深入地解释过

  • 着色器就像普通文本文件一样,您可以将着色器代码放入其中。如果在运行时使用D3D函数编译着色器,则不需要将它们添加到项目中

  • 有两种方法可以做到这一点。一种是将着色器代码放入.fx文件或*.hlsl文件中,然后在运行时使用D3D库函数(D3DCompileFromFile)编译着色器。尽管微软不再建议这样做,因为D3DCompileFromFile在Metro风格的应用程序中无法工作。另一种方法是在生成时使用fxc.exe编译着色器。Visual Studio 2012将此过程作为常规构建的一部分。因此,您可以将hlsl文件添加到项目中,并在构建项目时生成它们。这还将使您能够在编译时查看着色器中的任何错误/警告


  • 希望有帮助。

    1。着色器新增功能?

    要获得sharder的介绍,请使用免费的shazzam着色器编辑器()通过交互式绘制工具创建简单着色器。尝试使用不同的选项,然后比较自动生成的HLSL(.fx)代码,以便更好地理解。在您了解如何编写着色器代码后,请购买标准书籍/在线教程,并根据您的要求练习编写自己的代码

    2。常用的编译方法:

    a。D3DXCreateEffectFromFile-编写着色器代码并保存在.fx扩展名中,然后通过D3DXCreateEffectFromFile动态编译代码。编译后的代码可以使用effect(ID3DXEffect)接口在核心模块中使用

    b。显式编译:编写着色器代码并保存在.fx扩展名中,并使用fxc.exe显式编译代码(可以在DirectX SDK实用工具文件夹中找到)

    示例:
    fxc.exe/Tfx_2_0/Fo file.fxo file.fx

    创建二进制文件后,如下所示

      1. Create a buffer and load the generated binary file(.fxo) by the file stream.
      2. Call D3DXCreateEffect and give the buffer content as a input parameter.
      3. Like "method a" use effect(ID3DXEffect) interface for interacting with the
         shader code. 
    
    3。简介教程: