Когда я пытаюсь загрузить результат шейдера из памяти, компилятор говорит: один или несколько аргументов недействительны. Shader компиляции успешно, но кажется, что после D3DCompileFromFile()
команда в памяти что-то не так, и по какой-то причине интерфейс по умолчанию не получает правильных значений.DirectX11 E_INVALIDARG Один или несколько аргументов недействительны
ID3DBlob* pBlobFX = NULL;
ID3DBlob* pErrorBlob = NULL;
hr = D3DCompileFromFile(str, NULL, NULL, NULL, "fx_5_0", NULL, NULL, &pBlobFX, &pErrorBlob); // OK
if (FAILED(hr))
{
if (pErrorBlob != NULL)
OutputDebugStringA((char *)pErrorBlob->GetBufferPointer());
SAFE_RELEASE(pErrorBlob);
return hr;
}
// Create the effect
hr = D3DX11CreateEffectFromMemory(pBlobFX->GetBufferPointer(), pBlobFX->GetBufferSize(), 0, pd3dDevice, ppEffect); // Error: E_INVALIDARG One or more arguments are invalid
Какую версию эффектов вы используете? Если вы используете версию [GitHub] (https://github.com/Microsoft/FX11), она выполняет «D3DX11CompileEffectFromFile'», которая выполняет эти два действия. –
Я исправил его. –
Пожалуйста, поделитесь информацией о том, что необходимо для исправления кода. –