在DirectX11中,在创建着色器资源视图到缓冲区时;我们必须填写D3D11_BUFFER_SRV
结构。
结构如下:
typedef struct D3D11_BUFFER_SRV {
union {
UINT FirstElement;
UINT ElementOffset;
};
union {
UINT NumElements;
UINT ElementWidth;
};
} D3D11_BUFFER_SRV;
我似乎无法找到关于我应该使用的每个联盟中的哪个字段以及何时,甚至真正意味着什么的任何文档。 MSDN页面(http://msdn.microsoft.com/en-us/library/windows/desktop/ff476094%28v=vs.85%29.aspx)给出了每个字段的相当明显的描述,但没什么用处。
答案 0 :(得分:4)
据我所知,对于结构化缓冲区,D3D11始终将这些联合中的值解释为第一个索引和条目数,这意味着您总是希望使用FirstElement
和NumElements
。
ElementWidth
,因为元素大小已经使用D3D11_BUFFER_DESC::StructureByteStride
声明。
此外,文档也具有误导性,因为FirstElement
实际上是第一个元素的索引,而不是以字节为单位的偏移量。
其他两个值确实没有理由。我唯一的猜测是,这个结构的目的是在其他地方使用,也许与一个标志说明如何解释工会,但我从未见过用其他方式。