The error is a "Unhandled exception at 0x76cbfc56 in XEngine11.exe: 0x0000087C: 0x87c." Weird that there seems to be no description text
Here is an outline of the setup: Perhaps I have set up the input layout incorrectly?
// Vertex Shader: normal and texcoord parts snipped
VSOutput VSmain(float3 iPos : POSITION0, float3 iNorm : NORMAL0, float2 iTex : TEXCOORD0 ,float3 iInstPos : POSITION1)
{
float4 worldPos = mul(float4(iPos, 1), World);
worldPos.xyz += iInstPos;
float4 viewPos = mul(worldPos, View);
float4 projPos = mul(viewPos, Proj);
VSOutput output;
output.Position = projPos;
return output;
}
// Input layout
D3D11_INPUT_ELEMENT_DESC desc[] =
{
// { name, index, format, slot, offset, class, steprate }
// stream 0
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
// stream 1
{ "POSITION", 1, DXGI_FORMAT_R32G32B32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
};
I've tried using TEXCOORD1 and NORMAL1 as the semantics for the instance position in the shader but that didnt work. Also, somebody else at the XNA forums seemed to have a similar problem, but theirs was solved by making sure the semantic index was explicitly typed in the shader, which is not my problem.
I remember this was particularly fiddly to achieve in D3D9. Just hoping it doesn't take too long to figure out for D3D11.
EDIT: I tried changing my index buffer to use 32 bit indices (DXGI_FORMAT_R32_UINT). Now the same crash occurs - at the line where the index buffer is bound to the pipeline.