D3D11_BUFFER_SRV - 我该如何使用它?

4
在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个回答

5
据我所知,对于结构化缓冲区,D3D11总是将这些联合中的值解释为“第一个索引”和“条目数量”,这意味着您总是希望使用“FirstElement”和“NumElements”。
“ElementWidth”似乎不需要,因为元素大小已经在“D3D11_BUFFER_DESC :: StructureByteStride”中声明。此外,文档有误导性,因为“FirstElement”实际上是第一个元素的索引,而不是字节偏移量。
其他两个值真的没有理由存在。我唯一的猜测是,这个结构体可能是用于在其他地方与标志一起使用,以说明如何解释这些联合,但我从未看到它以其他方式使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接