ID3D11Device::CreateGeometryShaderWithStreamOutput 方法 (d3d11.h)

创建可以写入流式输出缓冲区的几何着色器。

语法

HRESULT CreateGeometryShaderWithStreamOutput(
  [in]            const void                       *pShaderBytecode,
  [in]            SIZE_T                           BytecodeLength,
  [in, optional]  const D3D11_SO_DECLARATION_ENTRY *pSODeclaration,
  [in]            UINT                             NumEntries,
  [in, optional]  const UINT                       *pBufferStrides,
  [in]            UINT                             NumStrides,
  [in]            UINT                             RasterizedStream,
  [in, optional]  ID3D11ClassLinkage               *pClassLinkage,
  [out, optional] ID3D11GeometryShader             **ppGeometryShader
);

参数

[in] pShaderBytecode

类型: const void*

指向标准几何着色器以及流输出的已编译几何着色器的指针。 有关如何获取此指针的信息,请参阅 获取指向已编译着色器的指针

若要在不使用几何着色器的情况下创建流输出,请传递指向上一阶段的输出签名的指针。 若要获取此输出签名,请调用 D3DGetOutputSignatureBlob 编译器函数。 还可以传递指向上一阶段的已编译着色器的指针, (例如 顶点着色器阶段域着色器阶段) 。 此编译的着色器提供数据的输出签名。

[in] BytecodeLength

类型: SIZE_T

已编译的几何着色器的大小。

[in, optional] pSODeclaration

类型: const D3D11_SO_DECLARATION_ENTRY*

指向D3D11_SO_DECLARATION_ENTRY数组 指针。 如果 NumEntries 为 0,>则不能为 NULL

[in] NumEntries

类型: UINT

流输出声明中的条目数 ( 范围为 0 到 D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT ) 。

[in, optional] pBufferStrides

类型: const UINT*

缓冲区步幅数组;每个步幅是该缓冲区的元素的大小。

[in] NumStrides

类型: UINT

pBufferStrides 中) (或缓冲区的步幅数 (范围为 0 到 D3D11_SO_BUFFER_SLOT_COUNT) 。

[in] RasterizedStream

类型: UINT

要发送到光栅器阶段的流的索引号 (范围为 0 到 D3D11_SO_STREAM_COUNT - 1) 。 如果没有要光栅化的流,则设置为 D3D11_SO_NO_RASTERIZED_STREAM。

[in, optional] pClassLinkage

类型: ID3D11ClassLinkage*

指向类链接接口的指针 (请参阅 ID3D11ClassLinkage) ;值可以为 NULL

[out, optional] ppGeometryShader

类型: ID3D11GeometryShader**

指向 ID3D11GeometryShader 接口的指针的地址,表示创建的几何着色器。 将此设置为 NULL 以验证其他参数;如果验证通过,该方法将返回S_FALSE而不是S_OK。

返回值

类型: HRESULT

此方法返回 Direct3D 11 返回代码之一。

注解

有关使用 CreateGeometryShaderWithStreamOutput 的详细信息,请参阅 Create a Geometry-Shader Object with Stream Output

从 Windows 8 开始提供的 Direct3D 11.1 运行时为 CreateGeometryShaderWithStreamOutput 提供以下新功能。

以下着色器模型 5.0 指令仅适用于 Direct3D 11.0 运行时中的像素着色器和计算着色器。 对于 Direct3D 11.1 运行时,由于无序访问视图 (UAV) 在所有着色器阶段都可用,因此你可以在所有着色器阶段使用这些说明。

因此,如果在几何着色器中使用以下着色器模型 5.0 指令,则可以将编译的几何着色器成功传递到 pShaderBytecode。 也就是说,对 CreateGeometryShaderWithStreamOutput 的调用成功。

如果将编译的着色器传递给 pShaderBytecode ,该代码在每个着色器阶段都不支持 UAV 的设备上使用以下任何说明, (包括未实现到每个着色器阶段支持 UAV 的现有驱动程序) , 则 CreateGeometryShaderWithStreamOutput 将失败。 如果着色器尝试使用硬件支持的 UAV 槽之外的 UAV 槽集,CreateGeometryShaderWithStreamOutput 也会失败。

Windows Phone 8:支持此 API。

要求

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

另请参阅

ID3D11Device