是否存在与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
“打包”在一起吗?有什么东西填充?
答案 0 :(得分:1)
输入布局的主要性能问题是它们的总大小,因为它直接影响必须通过变换前和变换后顶点缓存的数据量。从历史上看,这个想法的总大小是32字节或64字节。
否则,您使用的类型通常不会在性能方面产生很大差异。使用的类型限制是您的目标硬件Feature Level。