ID3D11DeviceContext::SOSetTargets 方法 (d3d11.h)

为管道的流输出阶段设置目标输出缓冲区。

语法

void SOSetTargets(
  [in]           UINT         NumBuffers,
  [in, optional] ID3D11Buffer * const *ppSOTargets,
  [in, optional] const UINT   *pOffsets
);

参数

[in] NumBuffers

类型: UINT

要绑定到设备的缓冲区数。 最多可以设置四个输出缓冲区。 如果调用定义的少于 4 个,则剩余的缓冲区槽设置为 NULL。 请参阅“备注”。

[in, optional] ppSOTargets

类型: ID3D11Buffer*

输出缓冲区的数组 (请参阅要绑定到设备的 ID3D11Buffer) 。 缓冲区必须已使用 D3D11_BIND_STREAM_OUTPUT 标志创建。

[in, optional] pOffsets

类型: const UINT*

从 ppSOTargets 到输出缓冲区的偏移量数组,每个缓冲区有一个偏移量。 偏移值必须以字节为单位。

返回值

备注

偏移量 -1 将导致追加流输出缓冲区,在上一个流输出传递中写入缓冲区的最后一个位置之后继续。

使用当前绑定写入的缓冲区调用此方法将有效地绑定 NULL ,因为缓冲区不能同时绑定为输入和输出。

每当阻止资源作为输入和输出同时绑定时,调试层都会生成警告,但这不会阻止运行时使用无效数据。

方法将保存对传入的接口的引用。 这与 Direct3D 10 中的设备状态行为不同。

请注意,与 Direct3D 中的某些其他资源方法不同,所有当前绑定的目标都将通过调用 SOSetTargets(0, nullptr, nullptr);取消绑定。

Windows Phone 8:支持此 API。

要求

要求
目标平台 Windows
标头 d3d11.h
Library D3D11.lib

另请参阅

ID3D11DeviceContext