у меня работает :) 1001 *
Мне пришлось удалить префикс L некоторых строк для компиляции кода:
"shaders.hlsl"
, "WindowClass"
, "Our First Direct3D Program"
Есть ли у вас файл .hlsl по тому же пути, что и ваш исполняемый файл?
Также вы не можете запустить программу из VS. Вам нужно будет запустить .exe из
исследователь.
Но вы можете установить абсолютный путь к своему шейдеру, если не хотите такого поведения, например:
D3DX11CompileFromFile("C:\\Users\\Stringer\\Desktop\\DXTest\\shaders.hlsl", ...
D3DX11CompileFromFile("C:\\Users\\Stringer\\Desktop\\DXTest\\shaders.hlsl", ...
Edit:
Также при создании устройства или устройства / swapchain всегда используйте D3D11_CREATE_DEVICE_DEBUG
в режиме отладки. Это выведет в окне вывода VS полезные предупреждения и ошибки (все выглядит нормально на моей стороне).
D3D11CreateDeviceAndSwapChain(NULL,
D3D_DRIVER_TYPE_REFERENCE,
NULL,
#ifdef _DEBUG
D3D11_CREATE_DEVICE_DEBUG,
#else
0,
#endif
NULL,
NULL,
D3D11_SDK_VERSION,
&scd,
&swapchain,
&dev,
NULL,
&devcon);
Edit2:
Также всегда проверяйте коды ошибок везде, где может произойти сбой приложения:
ID3D10Blob* pErrorBlob = NULL;
HRESULT hr = D3DX11CompileFromFile("C:\\Users\\Stringer\\Desktop\\\\DXTest\\shaders.hlsl", 0, 0, "VShader", "vs_5_0", 0, 0, 0, &VS, &pErrorBlob, 0);
LPVOID pError = NULL;
if( pErrorBlob )
{
pError = pErrorBlob->GetBufferPointer();
// then cast to a char* to see it in the locals window
}