Jedyne co robisz ze zmienną (przechowującą wskaźnik, domyślnie nullptr) fx to podanie wskaźnika na nią do funkcji D3DX11CreateEffectFromMemory, potem od razu ją wykorzystujesz. Popełniasz tu kilka błędów.
Przede wszystkim sprawdź co zwraca ta funkcja która miała ci wstawić poprawny wskaźnik do fx. Będzie to jeden z wyliczonych tutaj kodów:
https://msdn.microsoft.com/en-us/library/windows/desktop/ff476174.aspx . Jeśli nie jset to S_OK, nie powinieneś zakładać że fx będzie w jakikolwiek sposób użyteczne.
Po drugie, nie sprawdzasz czy pod fx faktycznie coś podstawiono. Gdybyś sprawdzał chociaż zwracany kod tamtej, można by to olać, ale teraz nie sprawdzasz dosłownie nic i aż prosisz się o ten wyjątek. W prawdziwej aplikacji to niedopuszczalne.
Trzecim problemem jest to że używasz globalnych zmiennych. Można napisać z nimi działający program, ale jego analiza jest znacząco trudniejsza, zwłaszcza jeśli nie ma się dostępu do jego całości. To bardzo zła praktyka.
Kolejnym problemem jest to że chyba nie do końca rozumiesz czym jest przypisanie i warunki sprawdzające czy wskaźnik nie jest nullem:
Bez kodu nic nie mogę pomóc. Na tym screenie co dałeś nie widać ani przypisania, ani warunków.
Widać obie rzeczy
Na screenie którego dałeś widać ten fragment kodu:
Spoiler
ID3D10Blob* compilationMsgs = 0;
HRESULT hr = D3DX11CompileFromFile(L"FX/color.fx", 0, 0, 0, "fx_5_0", shaderFlags, 0, 0, &compiledShader, &compilationMsgs, 0);
if (compilationMsgs != 0)
{
MessageBoxA(0, (char*)compilationMsgs->GetBufferPointer(), 0, 0);
compilationMsgs->Release();
}
if (FAILED(hr))
{
MessageBox(0, L"Some error while compiling fx file!", L"Error", MB_OK | MB_ICONERROR);
}
D3DX11CreateEffectFromMemory(compiledShader->GetBufferPointer(), compiledShader->GetBufferSize(), 0, d3dDevice, &fx);
compiledShader->Release();
technique = fx->GetTechniqueByName("ColorTech");
fxMVPMatrix = fx->GetVariableByName("gWorldViewProj")->AsMatrix();
}
Nie ma tu ani przypisania do zmiennej fx, ani sprawdzenia jej zawartości. Raz używasz wskaźnika na nią (...Device, &fx);), zaraz potem dokonujesz jej dereferencji (... = fx->Get...).