D3DX11CompileFromMemory 函数

注意

D3DX (D3DX 9、D3DX 10 和 D3DX 11) 实用工具库已弃用Windows 8,并且不支持 Windows 应用商店应用。

注意

建议使用 Fxc.exe 命令行编译器或 HLSL 编译 API 之一(如 D3DCompile API)脱机编译,而不是使用此函数。

编译内存中加载的着色器或效果。

语法

HRESULT D3DX11CompileFromMemory(
  _In_        LPCSTR             pSrcData,
  _In_        SIZE_T             SrcDataLen,
  _In_        LPCSTR             pFileName,
  _In_  const D3D10_SHADER_MACRO *pDefines,
  _In_        LPD3D10INCLUDE     pInclude,
  _In_        LPCSTR             pFunctionName,
  _In_        LPCSTR             pProfile,
  _In_        UINT               Flags1,
  _In_        UINT               Flags2,
  _In_        ID3DX11ThreadPump  *pPump,
  _Out_       ID3D10Blob         **ppShader,
  _Out_       ID3D10Blob         **ppErrorMsgs,
  _Out_       HRESULT            *pHResult
);

参数

pSrcData [in]

类型: LPCSTR

指向内存中着色器的指针。

SrcDataLen [in]

类型: SIZE_T

内存中着色器的大小。

pFileName [in]

类型: LPCSTR

包含着色器代码的文件的名称。

pDefines [in]

类型: const D3D10_SHADER_MACRO*

可选。 指向宏定义的数组的指针, (查看 D3D10_SHADER_MACRO) 。 数组中的最后一个结构用作终止符,并且必须将所有成员设置为 0。 如果未使用,请将 pDefines 设置为 NULL

pInclude [in]

类型: LPD3D10INCLUDE

可选。 指向用于处理包含文件的接口的指针。 如果着色器包含#include,则将其设置为 NULL 将导致编译错误。

pFunctionName [in]

类型: LPCSTR

着色器执行开始的着色器入口点函数的名称。 编译效果时, D3DX11CompileFromMemory 忽略 pFunctionName;建议将 pFunctionName 设置为 NULL ,因为如果调用的函数不使用它,则最好将指针参数设置为 NULL

pProfile [in]

类型: LPCSTR

指定着色器模型的字符串;可以是着色器模型 2、着色器模型 3、着色器模型 4 或着色器模型 5 中的任何配置文件。 配置文件也可以用于效果类型 (例如fx_4_1) 。

Flags1 [in]

类型: UINT

着色器 编译标志

Flags2 [in]

类型: UINT

效果 编译标志。 编译着色器而不是效果文件时, D3DX11CompileFromMemory 将忽略 Flags2;建议将 Flags2 设置为零,因为如果调用的函数不使用它,则最好将非点参数设置为零。

pPump [in]

类型: ID3DX11ThreadPump*

指向线程泵接口的指针 (请参阅 ID3DX11ThreadPump 接口) 。 使用 NULL 指定此函数在完成之前不应返回。

ppShader [out]

类型: ID3D10Blob**

指向内存的指针,其中包含编译的着色器,以及任何嵌入的调试和符号表信息。

ppErrorMsgs [out]

类型: ID3D10Blob**

指向内存的指针,其中包含编译过程中发生的错误和警告的列表。 这些错误和警告与调试器的调试输出相同。

pHResult [out]

类型: HRESULT*

指向返回值的指针。 可能为 NULL。 如果 pPump 不为 NULL,则 pHResult 必须是有效的内存位置,直到异步执行完成。

返回值

类型: HRESULT

返回值是 Direct3D 11 返回代码中列出的值之一。

如果在向 pPump 参数提供 NULL 时向 pHResult参数提供非NULL,则 D3DX11CompileFromMemory 返回E_INVALIDARG。 有关这种情况的详细信息,请参阅备注。

备注

有关 D3DX11CompileFromMemory 的详细信息,请参阅 D3DCompile

如果同时向 pPump 参数提供 NULL,则必须为 pHResult 参数提供 NULL。 否则,你随后无法使用 D3DX11CompileFromMemoryppShader 参数指向的内存中返回的已编译着色器代码来创建着色器。 若要从符合的着色器代码创建着色器,请调用以下 ID3D11Device 接口方法之一:

此外,如果在向 pPump 提供 NULL 时向 pHResult 提供非 NULL 值,则 D3DX11CompileFromMemory 将返回E_INVALIDARG错误代码。

要求

要求
标头
D3DX11async.h

D3DX11.lib

另请参阅

D3DX 函数