В настоящее время я читаю «Введение в программирование трехмерных игр с помощью DirectX 11» Фрэнка Луны и только что подошел к той части, где я загружаю свой первый шейдер.
После связывания с соответствующими библиотеками, чтобы иметь возможность компилировать шейдеры, я был вынужден переключиться на набор инструментов VS 2010, чтобы мое приложение не пыталось использовать библиотеки Windows 8.1 (которые включают DirectX, поэтому он конфликтовал с моим июньским каталогом SDK).
Теперь у меня есть все, что нужно для компиляции, однако мой вызов функции D3D11CreateDevice теперь сохраняет D3D_FEATURE_LEVEL_9_3 как мой самый высокий поддерживаемый уровень функций. Раньше этого не было. Я подтвердил на моем dxdiag.exe, что моя система может поддерживать 11. Я также подтвердил это в панели управления NVidia, где указано, что версия DirectX Runtime - 11_0.
Из того, что я читал от других людей, у которых были подобные проблемы, было то, что их основной видеоадаптер был адаптером по умолчанию. Однако у меня только один адаптер, так что мой GTX 670 должен быть моим основным адаптером, верно?
Моя среда: Visual Studio 2013 (с использованием набора инструментов VS 2010) Видеокарта: GEFORCE GTX 670M (с поддержкой dx11) НОУТБУК ASUS G75V 64-разрядная версия Windows 7
Тем не менее, вот мой звонок, чтобы проверить уровень функциональности.
// Create Direct3D Device
HRESULT hr = D3D11CreateDevice(
0,
D3D_DRIVER_TYPE_HARDWARE,
0,
createDeviceFlags,
0, 0,
D3D11_SDK_VERSION,
&m_d3dDevice,
&featureLevel,
&m_d3dImmediateContext);
if (FAILED(hr)) {
throw Error("Direct3D Device Creation Failed!");
}
// Check feature level
if (featureLevel != D3D_FEATURE_LEVEL_11_0) {
throw Error("Direct3D Feature Level 11 not supported!");
}
Мы будем очень благодарны за любой вклад относительно того, что, черт возьми, происходит. Direct3D - это довольно новый для меня мир, поэтому не торопитесь.