如果我想在构建时将HLSL编译为头文件,如何编写头文件,

2 c c++ hlsl directx-11

MSDN表示您可以将.hlsl文件编译为头文件中定义的字节数组.这是他们给出的代码.

    #include "PixelShader.h"
    ComPtr<ID3D11PixelShader> m_pPixelShader;
    hr = pDevice->CreatePixelShader(g_psshader, 
         sizeof(g_psshader), nullptr, &m_pPixelShader);
Run Code Online (Sandbox Code Playgroud)

g_psshader字节数组也是如此.但是如何定义g_psshader呢?我无处可寻找谈论这个问题.我尝试了一些方法,但都失败了.MSDN提供了媒体扩展示例.但是该样本中没有PixelShader.h.

如果你错过了这个问题:如何在上面的代码中定义g_psshader(我的意思是在标题PixelShader.h中).

use*_*203 5

此解决方案适用于Visual Studio 2012.

要设置与.fx或.hlsl文件关联的头文件和变量名称:

  1. 右键单击Solution Explorer中的.fx或.hlsl文件,然后选择Properties.
  2. 左边应该有一棵名为"HLSL编译器"的树.展开此树并选择"输出文件".
  3. 在右侧的属性表上,有几个用于管理HLSL编译的属性.

"标头变量名称" - >将包含着色器字节代码的变量的名称.

"头文件名" - >用于放置着色器字节代码的头文件的名称.

我的理解是,如果将此文件包含在代码中,那么您应该可以访问编译到此文件中的变量.在主项目的构建过程开始之前,应将FX和HLSL代码编译到这些文件中.

注意:您可能还需要更改常规下的"入口点名称"以反映您要编译的技术的名称(假设您使用的是.fx).您还必须为特定着色器文件指定"着色器类型"和"着色器模型".