Hi guys,
I am setting up instanced drawing (non-indexed) like this:
struct d3d_vertex
{
float x, y, z;
float nx, ny, nz;
float u, v, w;
};
struct d3d_instance
{
float x, y, z;
};
D3D11_INPUT_ELEMENT_DESC layout[4];
layout[0] = { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 };
layout[1] = { "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 };
layout[2] = { "TEXCOORD", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0 };
layout[3] = { "TEXCOORD", 1, DXGI_FORMAT_R32G32B32_FLOAT, 1, 36, D3D11_INPUT_PER_VERTEX_DATA, 0 };
...
UINT buffer_strides[2];
buffer_strides[0] = sizeof(d3d_vertex);
buffer_strides[1] = sizeof(d3d_instance);
d3d_context->IASetVertexBuffers(0, 2, bufferPointers, buffer_strides, buffer_offsets);
...
d3d_context->DrawInstanced(tree_model.buffer_size, 1, 0, 0);
I am getting this error:
ID3D11DeviceContext::DrawInstanced: Input vertex slot 0 has stride 36 which is less than the minimum stride logically expected from the current Input Layout (48 bytes).
What am I missing ?
Thanks.
****
solved part:
layout[0] = { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 };
layout[1] = { "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 };
layout[2] = { "TEXCOORD", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0 };
layout[3] = { "TEXCOORD", 1, DXGI_FORMAT_R32G32B32_FLOAT, 1, 0, D3D11_INPUT_PER_INSTANCE_DATA, 1 };