CreateInputLayout возвращает E_INVALIDARG - PullRequest
0 голосов
/ 26 сентября 2019

Я пишу программу на C ++, используя DirectX11.Теперь я хотел начать с шейдеров, и для этого мне также нужно ID3D11InputLayout

//in main
shader.Bind(DeviceContext);

ID3D11InputLayout *pLayout;
D3D11_INPUT_ELEMENT_DESC ied[] =
{
    {"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
    {"COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0},
};

HRESULT hh = Device->CreateInputLayout(ied, 2, shader.GetVSBlob()->GetBufferPointer(), shader.GetVSBlob()->GetBufferSize(), &pLayout);

DeviceContext->IASetInputLayout(pLayout);

//Vertex Shader
struct VOut
{
float4 position : SV_POSITION;
float4 color : COLOR;
};

VOut main(float4 position : POSITION, float4 color : COLOR)
{
VOut output;

output.position = position;
output.color = color;

return output;
}
//pixel shader
struct VOut
{
float4 position : SV_POSITION;
float4 color : COLOR;
};

float4 main(float4 position : SV_POSITION, float4 color : COLOR) : SV_TARGET
{
return color;
}

Device-> CreateInputLayout () возвращает E_INVALIDARG.

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Включите Direct3D отладочное устройство и ищите выходные данные отладки.

D3D11 ERROR: ID3D11Device::CreateInputLayout: The provided input signature expects
to read an element with SemanticName/Index: 'SV_Position'/0, but the declaration
doesn't provide a matching name.
[ STATE_CREATION ERROR #163: CREATEINPUTLAYOUT_MISSINGELEMENT]

В этом случае вы увидите, что вы использовали устаревшую семантику "POSITION" в макете, но"SV_Position" в шейдере.Они должны быть последовательными.

1 голос
/ 26 сентября 2019

В вашем описании POSITION определен как R32G32B32, но шейдер ожидается как float4, вот почему?

Либо так, либо что-то не так с данными BLOB-объектов.Я предполагаю, что данные блобов шейдеров предназначены для шейдеров Vertex, а не для пиксельных шейдеров?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...