1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
/* Internal nacros */
#define SETUP_VERTEXLAYOUT(vert, name, index, fmt, slot, offset, stride) \
vert.SemanticName = name; \
vert.SemanticIndex = index; \
vert.Format = fmt; \
vert.InputSlot = slot; \
vert.AlignedByteOffset = offset; \
vert.InputSlotClass = D3D11_INPUT_PER_VERTEX_DATA; \
vert.InstanceDataStepRate = 0; \
offset += stride;
/* Create the mesh vertex layout */
D3D11_INPUT_ELEMENT_DESC* VertexLayout3D = new D3D11_INPUT_ELEMENT_DESC[11];
s32 Offset = 0;
SETUP_VERTEXLAYOUT(VertexLayout3D[0], "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, Offset, 12);
SETUP_VERTEXLAYOUT(VertexLayout3D[1], "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, Offset, 16);
for (s32 i = 0; i < 8; ++i)
{
SETUP_VERTEXLAYOUT(
VertexLayout3D[2 + i], "TEXCOORD", i, DXGI_FORMAT_R32G32B32_FLOAT, 0, Offset, 12
);
}
SETUP_VERTEXLAYOUT(VertexLayout3D[10], "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UINT, 0, Offset, 4);
|