Не компилируется шейдер DirectX 11
имеется подгрузка шейдера из файла
hr = m_compileshaderfromfile(const_cast<wchar_t*>(L"shader.fx"), "VS", "vs_4_0", &pVSBlob);
if (FAILED(hr))
{
std::cerr << "Cannot compile shader.fx ----------- VS" << std::endl;
return 0;
}
При запуске приложение сразу же закрывается с кодом 0x0. В консоли отображается данное сообщение:
Cannot compile shader.fx ----------- VS
Вызов функции определен так:
class MyRender : public Render
{
private:
HRESULT m_compileshaderfromfile(WCHAR* FileName, LPCSTR EntryPoint, LPCSTR ShaderModel, ID3DBlob** ppBlobOut);
И сама функция:
HRESULT MyRender::m_compileshaderfromfile(WCHAR* FileName, LPCSTR EntryPoint, LPCSTR ShaderModel, ID3DBlob** ppBlobOut)
{
HRESULT hr = S_OK;
DWORD ShaderFlags = D3DCOMPILE_ENABLE_STRICTNESS;
#if defined( DEBUG ) || defined( _DEBUG )
ShaderFlags |= D3DCOMPILE_DEBUG;
#endif
ID3DBlob* pErrorBlob;
hr = D3DX11CompileFromFile(FileName, NULL, NULL, EntryPoint, ShaderModel, ShaderFlags, 0, NULL, ppBlobOut, &pErrorBlob, NULL);
if (FAILED(hr) && pErrorBlob != NULL) OutputDebugStringA((char*)pErrorBlob->GetBufferPointer());
_RELEASE(pErrorBlob);
return hr;
}
Шейдер shader.fx. Лежит в папке с запускаемым файлом. Содержит:
cbuffer ConstantBuffer
{
matrix World;
matrix View;
matrix Projection;
}
struct VS_OUTPUT
{
float4 Pos : SV_POSITION;
float4 Color : COLOR0;
};
VS_OUTPUT VS( float4 Pos : POSITION, float4 Color : COLOR )
{
VS_OUTPUT output = (VS_OUTPUT)0;
output.Pos = mul( Pos, World );
output.Pos = mul( output.Pos, View );
output.Pos = mul( output.Pos, Projection );
output.Color = Color;
return output;
}
float4 PS( VS_OUTPUT input ) : SV_Target
{
return input.Color;
}
Попробовал поместить шейдер в корень C:, результат тот же