繁体   English   中英

X3501 'main':在 VS2015 中编译 DirectX11 .hlsl 着色器时找不到入口点

[英]X3501 'main': entrypoint not found when compiling DirectX11 .hlsl shaders in VS2015

我正在尝试遵循本教程: https : //docs.microsoft.com/en-us/windows/uwp/gaming/creating-shaders-and-drawing-primitives

我在我的项目中添加了两个名为SimplePixelShader.hlsl和 `SimpleVertexShader.hlsl 的文件,内容如下:

在每个文件上,我进入(右键单击文件-> 属性),将其设置为正确的配置(调试 X64)并更改字段:

General->Excluded From build = blank
General->Content = blank
General->Item Type = HLSL Compiler
HLSL Compiler->Entrypoint Name = blank (deleted main)
HLSL Compiler->Shader Type = Pixel Shader (/ps)
HLSL Compiler->Shader Model = Shader Model 4 Level 9_1 (/4_0_level_9_1)
All Options->Shader Type = Pixel Shader (/ps)
All Options->Entrypoint Name = blank (deleted main)
All Options->Shader Model = Shader Model 4 Level 9_1 (/4_0_level_9_1)

然后对 SimpleVertexShader.hlsl 的相应顶点着色器条目进行相同的更改

但是无论我尝试什么,编译时仍然出现相同的错误:

X3501 'main':未找到入口点

如果我从所有字段中删除入口点,这怎么可能? 我错过了什么?

谢谢,

SimpleVertexShader.hlsl:

struct VertexShaderInput
{
    DirectX::XMFLOAT2 pos : POSITION;
};

struct PixelShaderInput
{
    float4 pos : SV_POSITION;
};

PixelShaderInput SimpleVertexShader(VertexShaderInput input)
{
    PixelShaderInput vertexShaderOutput;

    // For this lesson, set the vertex depth value to 0.5, so it is guaranteed to be drawn.
    vertexShaderOutput.pos = float4(input.pos, 0.5f, 1.0f);

    return vertexShaderOutput;
}

下面是 SimplePixelShader.hlsl 中的代码:

struct PixelShaderInput
{
    float4 pos : SV_POSITION;
};

float4 SimplePixelShader(PixelShaderInput input) : SV_TARGET
{
    // Draw the entire triangle yellow.
    return float4(1.0f, 1.0f, 0.0f, 1.0f);
}

好的,我做了一些测试,似乎当您将Entrypoint Name字段留空时,它会尝试使用main 相反,我只是相应地输入SimpleVertexShaderSimplePixelShader ,然后它们都编译了。 谢谢

我可以为 DX-12 添加这个:当你使用 1 个以上的着色器文件时,我发现 VS-2019 HLSL 编译器存在一致的障碍。 当 2 个文件都使用 "HLSL Compiler" 时,总是会出现此“主要”错误消息。 可以设置入口点来避免它,但是由于某种原因,程序将无法在运行时编译您的着色器。

考虑完全跳过所有内容:只需将“HLSL 编译器”类型替换为未分配(默认)“自定义构建工具”。 这将(默认情况下)只是将您的 HLSL 复制到您的 exe 应用程序旁边。 在 DX-12 中,您将使用 D3DCompileFromFile() 自己编译着色器,因此最终不会有任何问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM