C++ D3D11_BUFFER_SRV-如何使用它?

C++ D3D11_BUFFER_SRV-如何使用它?,c++,directx,buffer,directx-11,C++,Directx,Buffer,Directx 11,在DirectX11中,创建缓冲区的着色器资源视图时;我们必须填写D3D11\u BUFFER\u SRV结构 结构如下所示: typedef struct D3D11_BUFFER_SRV { union { UINT FirstElement; UINT ElementOffset; }; union { UINT NumElements; UINT ElementWidth; }; } D3D11_BUFFER_SRV; 我似乎找不到任何关

在DirectX11中,创建缓冲区的着色器资源视图时;我们必须填写
D3D11\u BUFFER\u SRV
结构

结构如下所示:

typedef struct D3D11_BUFFER_SRV {
  union {
    UINT FirstElement;
    UINT ElementOffset;
  };
  union {
    UINT NumElements;
    UINT ElementWidth;
  };
} D3D11_BUFFER_SRV;

我似乎找不到任何关于我应该在每个联盟中使用哪个字段、何时使用,甚至是它们真正的含义的文档。MSDN页面()对每个字段都有相当明显的描述,但没有什么帮助。

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

ElementWidth
似乎不需要,因为元素大小已使用
D3D11\u BUFFER\u DESC::StructureByteStride
声明。 另外,文档也有误导性,因为
FirstElement
实际上是第一个元素的索引,而不是以字节为单位的偏移量

其他两个值真的没有理由。我唯一的猜测是,这个结构是打算在其他地方使用的,可能会与一个标志一起使用,该标志表示如何解释工会,但我从未见过它使用任何其他方式