【发布时间】: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