Исключение первого шанса в 0x772BDBB7 в файле game.exe: 0xC0000008: указан неверный дескриптор

Поэтому я возился с некоторой обработкой текста, связанной с рендерингом текста в DirectXTK, и думаю, что я, возможно, "разозлил" визуальную студию. После получения некоторых ошибок, потому что я пытался заставить его работать с массивами за пределами, это дало мне ошибки, и я не знаю, просто ли я получал ошибку слишком много раз или я по ошибке пытался продолжить работу программы после ошибки но теперь я получаю ошибку (то же самое, что я думаю) в совершенно другом классе.

HRESULT hr;
wchar_t VSFilepath[250] = L"";
wchar_t PSFilepath[250] = L"";

wchar_t SVSFilepath[250] = L"";
wchar_t SPSFilepath[250] = L"";

wcscat_s(VSFilepath, directory);
wcscat_s(VSFilepath, L"\\Shaders\\Player\\PlayerVertexShader.hlsl");
wcscat_s(PSFilepath, directory);
wcscat_s(PSFilepath, L"\\Shaders\\Player\\PlayerPixelShader.hlsl");

//create vertex shader
ID3DBlob* pVS = nullptr;
hr = D3DCompileFromFile(VSFilepath,
                        nullptr,
                        D3D_COMPILE_STANDARD_FILE_INCLUDE,
                        "VS_main",
                        "vs_5_0",
                        0,
                        NULL,
                        &pVS,
                        nullptr);

hr = gDevice->CreateVertexShader(pVS->GetBufferPointer(),
                                 pVS->GetBufferSize(),
                                 nullptr,
                                 &playerVertexShader);

//create input layout (verified using vertex shader)
D3D11_INPUT_ELEMENT_DESC inputDesc[] =
{
    {"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0,  0, D3D11_INPUT_PER_VERTEX_DATA, 0},
    {"TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT,    0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0},
    {"NORMAL",   0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 20, D3D11_INPUT_PER_VERTEX_DATA, 0}, 
};
hr = gDevice->CreateInputLayout(inputDesc,
                                ARRAYSIZE(inputDesc),
                                pVS->GetBufferPointer(),
                                pVS->GetBufferSize(),
                                &playerVertexLayout);
pVS->Release();

//create pixel shader
ID3DBlob* pPS = nullptr;
hr = D3DCompileFromFile(PSFilepath,
                        nullptr,
                        D3D_COMPILE_STANDARD_FILE_INCLUDE,
                        "PS_main",
                        "ps_5_0",
                        0,
                        NULL,
                        &pPS,
                        nullptr);

hr = gDevice->CreatePixelShader(pPS->GetBufferPointer(),
                                pPS->GetBufferSize(),
                                nullptr,
                                &playerPixelShader);
pPS->Release();

Проходя через программу, я пришел к следующему выводу:

После того, как я использую функцию создания шейдера, например CreateVertexShader, в следующий раз, когда я пытаюсь использовать D3DCompileFromFile, программа останавливается и с "Исключением первого шанса в 0x772BDBB7 в game.exe: 0xC0000008: указан неверный дескриптор".

Не имеет значения, если я попытаюсь закомментировать CreateVertexShader, уверен, что он может создать следующий пиксельный шейдер, но следующий D3DCompileFromFile выдаст мне ту же ошибку, и все hr-результаты будут S_OK.

Дело в том, что его код работал, вероятно, сто раз до этого, и я ничего не изменил, так что я очень запутался в том, что произошло.

0 ответов

Другие вопросы по тегам