Функция D3DX11CompileFromResource
Примечание
Библиотека служебных программ D3DX (D3DX 9, D3DX 10 и D3DX 11) устарела для Windows 8 и не поддерживается для приложений Магазина Windows.
Примечание
Вместо этой функции рекомендуется использовать функции ресурсов, а затем выполнить автономную компиляцию с помощью компилятора командной строки Fxc.exe или использовать один из API компиляции HLSL, например API D3DCompile .
Скомпилируйте шейдер или эффект из ресурса.
Синтаксис
HRESULT D3DX11CompileFromResource(
_In_ HMODULE hSrcModule,
_In_ LPCTSTR pSrcResource,
_In_ LPCTSTR pSrcFileName,
_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
);
Параметры
-
hSrcModule [in]
-
Тип: HMODULE
Дескриптор для модуля ресурсов, содержащего шейдер. HMODULE можно получить с помощью функции GetModuleHandle.
-
pSrcResource [in]
-
Тип: LPCTSTR
Имя ресурса, содержащего шейдер. Если для параметров компилятора требуется Юникод, тип данных LPCTSTR разрешается в LPCWSTR. В противном случае тип данных разрешается в LPCSTR.
-
pSrcFileName [in]
-
Тип: LPCTSTR
Необязательный элемент. Имя файла эффекта, которое используется только для сообщений об ошибках. Может иметь значение NULL.
-
pDefines [in]
-
Тип: const D3D10_SHADER_MACRO*
Необязательный элемент. Указатель на массив определений макросов (см . D3D10_SHADER_MACRO). Последняя структура в массиве выступает в качестве признака конца и должна иметь значение 0 для всех членов. Если параметр не используется, задайте для параметра pDefinesзначение NULL.
-
pВключение [in]
-
Тип: LPD3D10INCLUDE
Необязательный элемент. Указатель на интерфейс для обработки включаемого файла. Установка значения NULL приведет к ошибке компиляции, если шейдер содержит #include.
-
pFunctionName [in]
-
Тип: LPCSTR
Имя функции точки входа шейдера, с которой начинается выполнение шейдера. При компиляции эффекта D3DX11CompileFromResource игнорирует pFunctionName; Рекомендуется задать для параметра pFunctionNameзначение NULL , так как рекомендуется задать для параметра указателя значение NULL , если вызываемая функция не будет использовать его.
-
pProfile [in]
-
Тип: LPCSTR
Строка, указывающая модель шейдера; может быть любым профилем в модели шейдера 2, модели шейдера 3, модели шейдера 4 или модели шейдера 5. Профиль также может иметь тип эффекта (например, fx_4_1).
-
Flags1 [in]
-
Тип: UINT
-
Flags2 [in]
-
Тип: UINT
Флаги компиляции эффектов. При компиляции шейдера, а не файла эффекта , D3DX11CompileFromResource игнорирует 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.
D3DX11CompileFromResource возвращает E_INVALIDARG, если параметру pHResult задано значение, отличное от NULL. Дополнительные сведения об этой ситуации см. в разделе Примечания.
Комментарии
Дополнительные сведения о D3DX11CompileFromResource см. в разделе D3DCompile.
В параметре pHResult необходимо указать значение NULL, если также задано значение NULL для параметра pPump. В противном случае впоследствии невозможно создать шейдер с помощью скомпилированного кода шейдера, который D3DX11CompileFromResource возвращает в памяти, на которую указывает параметр ppShader . Чтобы создать шейдер на основе кода шейдера, необходимо вызвать один из следующих методов интерфейса ID3D11Device :
- CreateComputeShader
- CreateDomainShader
- CreateGeometryShader
- CreateGeometryShaderWithStreamOutput
- CreateHullShader
- CreatePixelShader
- CreateVertexShader
Кроме того, если при предоставлении значения NULLдля pPump для pHResult указано значение, отличное от NULL, D3DX11CompileFromResource возвращает код ошибки E_INVALIDARG.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|