Ich habe keine Ahnung, wieso dass nicht funktioniert. Der Effekt wurde erfolgreich geladen, ich kann Effektvariablen erfolgreich wieder auslesen. CreateInputLayout gibt E_INVALIDARG zurück.
passDesc enthält als Name einen leeren String und gibt als Größe der Inputsignatur irgendwas größer 5000000 an. Kann das stimmen?
D3D10: ERROR: ID3D10Device::CreateInputLayout: Encoded Signature size doesn't match specified size.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
|
D3D10_PASS_DESC passDesc;
p_effect->GetTechniqueByName("t0")->GetPassByName("p0")->GetDesc(&passDesc);
D3D10_INPUT_ELEMENT_DESC inputLayout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D10_INPUT_PER_VERTEX_DATA, 0 }
};
HRESULT d = p_device->CreateInputLayout(inputLayout, 2, passDesc.pIAInputSignature, passDesc.IAInputSignatureSize, &p_inputLayout);
|
|
C-/C++-Quelltext
|
1
2
3
4
5
|
struct VS_INPUT
{
float3 position : POSITION;
float3 normal : NORMAL;
};
|