D3D11_INPUT_ELEMENT_DESC:元素类型/订购/包装

时间:2014-04-30 21:57:02

标签: c++ data-structures direct3d11

是否存在与D3D11_INPUT_ELEMENT_DESC结构中元素的类型/排序相关的问题(性能或其他)?例如,我现在有一个如下定义的输入布局:

D3D11_INPUT_ELEMENT_DESC QuadInputLayoutDescription[] = {
    { "PRECT",  0, DXGI_FORMAT_R32G32B32A32_FLOAT,  0, 0,                               D3D11_INPUT_PER_INSTANCE_DATA, 1 },
    { "DEPTH",  0, DXGI_FORMAT_R32_FLOAT,           0, D3D11_APPEND_ALIGNED_ELEMENT,    D3D11_INPUT_PER_INSTANCE_DATA, 1 },
    { "TEXID",  0, DXGI_FORMAT_R32_UINT,            0, D3D11_APPEND_ALIGNED_ELEMENT,    D3D11_INPUT_PER_INSTANCE_DATA, 1 },
    { "SLICE",  0, DXGI_FORMAT_R32_FLOAT,           0, D3D11_APPEND_ALIGNED_ELEMENT,    D3D11_INPUT_PER_INSTANCE_DATA, 1 },
    { "UVRCT",  0, DXGI_FORMAT_R32G32B32A32_FLOAT,  0, D3D11_APPEND_ALIGNED_ELEMENT,    D3D11_INPUT_PER_INSTANCE_DATA, 1 },
    { "COLOR",  0, DXGI_FORMAT_R32G32B32A32_FLOAT,  0, D3D11_APPEND_ALIGNED_ELEMENT,    D3D11_INPUT_PER_INSTANCE_DATA, 1 } };

TEXID元素的类型UINT而不是FLOAT是否重要?是对齐四个组件向量结构(float4)的首选;我应该在布局的开头将所有R32G32B32A32_FLOAT“打包”在一起吗?有什么东西填充?

1 个答案:

答案 0 :(得分:1)

输入布局的主要性能问题是它们的总大小,因为它直接影响必须通过变换前和变换后顶点缓存的数据量。从历史上看,这个想法的总大小是32字节或64字节。

否则,您使用的类型通常不会在性能方面产生很大差异。使用的类型限制是您的目标硬件Feature Level