Advertisement

Solved - DrawInstanced Input Layout ?

Started by December 23, 2017 11:03 PM
0 comments, last by Endemoniada 7 years, 1 month ago

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 };
	

 

 

 

 

 

This topic is closed to new replies.

Advertisement