ID3D11Device::CreateVertexShader 方法 (d3d11.h)

从编译的着色器创建顶点着色器对象。

语法

HRESULT CreateVertexShader(
  [in]            const void         *pShaderBytecode,
  [in]            SIZE_T             BytecodeLength,
  [in, optional]  ID3D11ClassLinkage *pClassLinkage,
  [out, optional] ID3D11VertexShader **ppVertexShader
);

参数

[in] pShaderBytecode

类型: const void*

指向已编译着色器的指针。

[in] BytecodeLength

类型: SIZE_T

编译的顶点着色器的大小。

[in, optional] pClassLinkage

类型: ID3D11ClassLinkage*

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

[out, optional] ppVertexShader

类型: ID3D11VertexShader**

指向 ID3D11VertexShader 接口的指针的地址。 如果为 NULL,则将验证所有其他参数,如果所有参数都通过验证,则此 API 将返回 S_FALSE 而不是 S_OK

返回值

类型: HRESULT

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

注解

Direct3D 11.1 运行时(从 Windows 8 开始提供)为 CreateVertexShader 提供以下新功能。

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

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

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

要求

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

另请参阅

ID3D11Device