Поделиться через


Функция D3DX11CompileFromMemory

Примечание

Библиотека служебных программ D3DX (D3DX 9, D3DX 10 и D3DX 11) устарела для Windows 8 и не поддерживается для приложений Магазина Windows.

Примечание

Вместо использования этой функции рекомендуется выполнять компиляцию в автономном режиме с помощью компилятора командной строки Fxc.exe или использовать один из API компиляции HLSL, например API D3DCompile .

Скомпилируйте шейдер или эффект, загруженный в память.

Синтаксис

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.

pВключение [in]

Тип: LPD3D10INCLUDE

Необязательный элемент. Указатель на интерфейс для обработки включаемого файла. Установка значения NULL приведет к ошибке компиляции, если шейдер содержит #include.

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 значение 0, так как рекомендуется задать для параметра, не являющегося указателем, равным нулю, если вызываемая функция не будет использовать его.

pPump [in]

Тип: ID3DX11ThreadPump*

Указатель на интерфейс потока (см. ID3DX11ThreadPump Interface). Используйте значение NULL , чтобы указать, что эта функция не должна возвращать до завершения.

ppShader [out]

Тип: ID3D10Blob**

Указатель на память, которая содержит скомпилированный шейдер, а также все внедренные сведения об отладке и таблице символов.

ppErrorMsgs [out]

Тип: ID3D10Blob**

Указатель на память, содержащий список ошибок и предупреждений, возникших во время компиляции. Эти ошибки и предупреждения идентичны выходным данным отладки отладчика.

pHResult [out]

Тип: HRESULT*

Указатель на возвращаемое значение. Может иметь значение NULL. Если pPump не равно NULL, то pHResult должен быть допустимым расположением памяти до завершения асинхронного выполнения.

Возвращаемое значение

Тип: HRESULT

Возвращаемое значение является одним из значений, перечисленных в коде возврата Direct3D 11.

D3DX11CompileFromMemory возвращает E_INVALIDARG, если параметру pHResult задано значение NULL, отличное от NULL. Дополнительные сведения об этой ситуации см. в разделе Примечания.

Комментарии

Дополнительные сведения о D3DX11CompileFromMemory см. в разделе D3DCompile.

В параметре pHResult необходимо указать значение NULL, если также задано значение NULL для параметра pPump. В противном случае вы не сможете впоследствии создать шейдер с помощью скомпилированного кода шейдера, который D3DX11CompileFromMemory возвращает в памяти, на которую указывает параметр ppShader . Чтобы создать шейдер на основе кода шейдера, необходимо вызвать один из следующих методов интерфейса ID3D11Device :

Кроме того, если для pPump задано значение, отличное от NULL, для pHResult, D3DX11CompileFromMemory возвращает код ошибки E_INVALIDARG.

Требования

Требование Значение
Заголовок
D3DX11async.h
Библиотека
D3DX11.lib

См. также раздел

Функции D3DX