【问题标题】:ID3D11Device::CreateVertexShader throws [ ERROR STATE_CREATION #167: CREATEVERTEXSHADER_INVALIDSHADERTYPE ]ID3D11Device::CreateVertexShader 抛出 [ ERROR STATE_CREATION #167: CREATEVERTEXSHADER_INVALIDSHADERTYPE ]
【发布时间】:2019-07-24 12:45:53
【问题描述】:

我有 2D 视频坐标 (x, y) 来渲染线到查看窗口。在运行时 ID3D11Device::CreateVertexShader 抛出异常 [ ERROR STATE_CREATION #167: CREATEVERTEXSHADER_INVALIDSHADERTYPE ]

我尝试过修改输入布局和结构,但它看起来对我来说是预期的。关于我的情况,我无法确定异常的实际原因。

/// <summary>Direct3D input layout for 2D position vertex. </summary>
static D3D11_INPUT_ELEMENT_DESC Pos2DVertexLayout[] =
{
    {"POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
};

struct PSClipPosColor
{
    float4 position : SV_POSITION;
    float2 depth : TEXCOORD0;
    float4 clipPos : TEXCOORD1;
    float4 color : COLOR;
};

DirectX::XMFLOAT4 fixedColor {0, 0, 0, 1};

PSClipPosColor main(float2 position : POSITION0)
{
    PSClipPosColor output = (PSClipPosColor)0;

    float4 pos = float4(position, 0.0f, 1.0f);
    output.position = mul(pos, worldViewProjection);
    output.depth.xy = output.position.zw;
    output.color = fixedColor;
    output.clipPos = mul(pos, world);

    return output;
}

我期望顶点着色器应该为所描述的输入布局采用 2D 视频坐标位置值。而是抛出异常 [ERROR STATE_CREATION #167: CREATEVERTEXSHADER_INVALIDSHADERTYPE]

请有人帮我找出问题所在。

【问题讨论】:

    标签: c++ directx-11 vertex-shader


    【解决方案1】:

    我找到了问题所在。真傻。

    在 *.vcxproj 文件中,我手动声明了 PS 到 VS 和 VS 到 PS 的变量名。

    曾经:

    <FxCompile Include="Shaders\DrawLinesElementPS.hlsl"> 
      <ShaderType>Pixel</ShaderType>
      <VariableName>drawLinesElementVS</VariableName>
    </FxCompile>
    <FxCompile Include="Shaders\DrawLinesElementVS.hlsl">
      <VariableName>drawLinesElementPS</VariableName>
    </FxCompile>
    

    现在:

    <FxCompile Include="Shaders\DrawLinesElementPS.hlsl"> 
      <ShaderType>Pixel</ShaderType>
      <VariableName>drawLinesElementPS</VariableName>
    </FxCompile>
    <FxCompile Include="Shaders\DrawLinesElementVS.hlsl">
      <VariableName>drawLinesElementVS</VariableName>
    </FxCompile>
    

    【讨论】:

      猜你喜欢
      • 2019-12-14
      • 2019-01-08
      • 2019-05-04
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      相关资源
      最近更新 更多