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);该值可以 NULL。
[out, optional] ppGeometryShader
类型:ID3D11GeometryShader**
指向 ID3D11GeometryShader 接口的指针的地址,表示创建的几何着色器。 将此设置为 NULL 来验证其他参数;如果验证通过,该方法将返回S_FALSE而不是S_OK。
返回值
类型:HRESULT
言论
有关使用 CreateGeometryShaderWithStreamOutput的详细信息,请参阅 使用流输出创建 Geometry-Shader 对象。
Direct3D 11.1 运行时从 Windows 8 开始提供以下新功能,用于 CreateGeometryShaderWithStreamOutput。
以下着色器模型 5.0 指令仅适用于 Direct3D 11.0 运行时中的像素着色器和计算着色器。 对于 Direct3D 11.1 运行时,由于所有着色器阶段都提供了无序访问视图(UAV),因此可以在所有着色器阶段使用这些说明。
因此,如果在几何着色器中使用以下着色器模型 5.0 指令,则可以成功将编译的几何着色器传递给 pShaderBytecode 。 也就是说,调用 CreateGeometryShaderWithStreamOutput 成功。
如果将已编译的着色器传递给 pShaderBytecode,该着色器在每台着色器阶段不支持 UAV 的设备上使用以下任何说明(包括未实现以支持每个着色器阶段的 UAV 的现有驱动程序),CreateGeometryShaderWithStreamOutput 失败。 如果着色器尝试使用 UAV 槽超出硬件支持的 UAV 槽集,则 createGeometryShaderWithStreamOutput 也失败。
- dcl_uav_typed
- dcl_uav_raw
- dcl_uav_structured
- ld_raw
- ld_structured
- ld_uav_typed
- store_raw
- store_structured
- store_uav_typed
- sync_uglobal
- 所有原子和直接原子(例如,atomic_and 和 imm_atomic_and)
要求
要求 | 价值 |
---|---|
目标平台 | 窗户 |
标头 | d3d11.h |
库 | D3D11.lib |