D3D12_STREAM_OUTPUT_BUFFER_VIEW 结构体用于描述流输出缓冲区视图,用于在 GPU 端进行流输出。这个结构体定义在 D3d12.h 头文件中。以下是该结构体的定义:
typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW {
  D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  UINT64                    SizeInBytes;
  D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
} D3D12_STREAM_OUTPUT_BUFFER_VIEW;

  •  BufferLocation: 流输出缓冲区的虚拟地址,指向缓冲区的起始位置。

  •  SizeInBytes: 流输出缓冲区的大小,以字节为单位。

  •  BufferFilledSizeLocation: 可选项,指定一个用于存储实际填充大小的缓冲区的虚拟地址。如果不需要存储实际填充大小,可以将其设置为0。


这个结构体通常在创建图形管道状态对象时使用,用于设置流输出状态。流输出是一种 GPU 计算技术,用于在 GPU 上生成输出数据并将其写入缓冲区,以供后续渲染或其他用途使用。

以下是一个简单的示例,用于创建一个流输出缓冲区视图:
D3D12_STREAM_OUTPUT_BUFFER_VIEW soBufferView = {};
soBufferView.BufferLocation = /* 流输出缓冲区的虚拟地址 */;
soBufferView.SizeInBytes = /* 流输出缓冲区的大小 */;
soBufferView.BufferFilledSizeLocation = /* 实际填充大小的缓冲区的虚拟地址,如果不需要可以设置为0 */;

// 将 soBufferView 传递给创建图形管道状态对象的函数,如 ID3D12Device::CreateGraphicsPipelineState。

确保参考 Direct3D 12 文档以获取更详细的信息。


转载请注明出处:http://www.pingtaimeng.com/article/detail/26000/Win32 API/D3d12.h/D3D12_STREAM_OUTPUT_BUFFER_VIEW