D3D11_BUFFER_SRV - 我该如何使用它?

时间:2014-10-24 08:48:58

标签: c++ directx buffer directx-11

在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)给出了每个字段的相当明显的描述,但没什么用处。

1 个答案:

答案 0 :(得分:4)

据我所知,对于结构化缓冲区,D3D11始终将这些联合中的值解释为第一个索引条目数,这意味着您总是希望使用FirstElementNumElements

似乎不需要

ElementWidth,因为元素大小已经使用D3D11_BUFFER_DESC::StructureByteStride声明。 此外,文档也具有误导性,因为FirstElement实际上是第一个元素的索引,而不是以字节为单位的偏移量。

其他两个值确实没有理由。我唯一的猜测是,这个结构的目的是在其他地方使用,也许与一个标志说明如何解释工会,但我从未见过用其他方式。