2017-03-10 13 views
2

나는 최근에 D3D를 배우기 시작했습니다. 내가 따라야 할 온라인 튜토리얼에 따라 환경을 설정했지만, DX11에 대한 Luna의 책 6 장 BOX 소스를 실행했을 때 문제가있었습니다."Direct3D 기능 수준 11이 지원되지 않습니다." Win7 + VS2010 환경에서

내가 얻을 다음 dialog box 실행 ("Direct3D를 기능 레벨 11 지원되지 않는.")

문제의 코드 세그먼트 : 나는 유래에 비슷한 문제를 발견

D3D_FEATURE_LEVEL featureLevel; 
HRESULT hr = D3D11CreateDevice(
     0,     // default adapter 
     md3dDriverType, 
     0,     // no software device 
     createDeviceFlags, 
     0, 0,    // default feature level array 
     D3D11_SDK_VERSION, 
     &md3dDevice, 
     &featureLevel, 
     &md3dImmediateContext); 

if(FAILED(hr)) 
{ 
    MessageBox(0, L"D3D11CreateDevice Failed.", 0, 0); 
    return false; 
} 

if(featureLevel != D3D_FEATURE_LEVEL_11_0) 
{ 
    MessageBox(0, L"Direct3D Feature Level 11 unsupported.", 0, 0); 
    return false; 
} 

(Two problems while initializing Directx 11.0 - 1.FeatureLevel, 2. 4xMSAA quality) , 하지만 대답은 내 문제를 해결하지 못합니다. 그래픽 드라이버를 업데이트했습니다.

나는이 적힌 DxDiag 도구를 사용했는데 결과는 다음과 같다 :

dxdiag

답변

1

Windows 7에는 DirectX 11 API가 포함되어 있지만 DirectX 11 지원 비디오 하드웨어가있는 것은 아닙니다. DirectX 11 (API)은 Direct3D hardware feature levels으로 배열 된 다양한 비디오 하드웨어를 지원합니다. 현재 사용중인 드라이버/카드가 11.0을 지원하지 않기 때문에 10.1 또는 10.0을 지원할 수 있습니다 (모두는 아님). features.

Windows 8 이상에서는 추가 기능 레벨이 11.0을 초과하여 요청할 수 있습니다. 기본적으로 nullptr을 기본 기능 수준 배열에 전달하면 9.1, 9.2, 9.3, 10.0, 10.1 또는 11.0 만 반환됩니다.

Windows 7 서비스 팩 1에서 DirectX 11.1 런타임을 설치할 수는 있지만 최신 드라이버 모델을 지원하지 않습니다. 따라서 Direct3D 하드웨어 기능 레벨 11.1을 사용할 수 없습니다.이 카드는 모두 11.0을 지원하므로이를 대체 할 수 있습니다. DirectX 11.1 and Windows 7을 참조하십시오. Windows 7에서는 DirectX 11.2 이상을 사용할 수 없습니다.

Frank Luna의 출처는 단순함을 위해 11.0 가능한 비디오 카드가 있다고 가정하고 있지만 이전 카드로 많은 것을 할 수 있습니다. 다양한 기능 수준의 장치를 만드는 방법에 대한 자세한 내용은 Anatomy of Direct3D 11 Create Device을 참조하십시오.

또는 최신 비디오 카드를 얻을 수 있습니다. 당신의 DirectX 개발에 새로운으로

, 곧 책의 인쇄 날짜 이후 오래된했다 루나의 책의 일부 측면에 노트 Book Recommendations를 읽으십시오. DirectX Tool Kit tutorials을보고 싶을 수도 있습니다.

마지막으로 최신 버전의 Visual Studio로 이동하는 것을 고려하십시오. 이 시점에서 현대 DirectX supporting libraries의 대부분은 구현 된 C++ 11 드래프트 언어 기능이 일부만 있기 때문에 VS 2010으로 빌드되지 않습니다. 라이센스 요구 사항을 충족하는 한 무료로 VS Community edition을 사용하십시오.

+0

컴퓨터를 바꿔야한다고 생각합니다.하지만 어떤 경우에는 제 질문에 답변 해 주셔서 감사합니다. – jyheng

0

그래픽 드라이버가 최신해서, 그들은 D3D_FEATURE_LEVEL_11_0을 지원하는 것을 의미하지 않는다. 어떤 비디오 카드가 DxDiag에서 실제로 가지고 있는지는 분명하지 않지만 HP 3005 MT의 기본 사양은 Nvidia 315로 사용 가능한 최상의 카드를 보여 주며 DirectX 10.1 만 지원합니다.

pFeatureLevels이 NULL로 설정하면

,이 기능은 기능 수준의 다음 배열을 사용합니다 : D3D11CreateDeivce에 대한 설명서에 명시된에서

{ D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_1, D3D_FEATURE_LEVEL_10_0을, D3D_FEATURE_LEVEL_9_3, D3D_FEATURE_LEVEL_9_2, D3D_FEATURE_LEVEL_9_1,};

기기에서 이러한 기능 수준이 지원되면 기능이 성공한다는 것을 의미합니다 (순서대로 시도합니다). 아마도 featureLevelD3D_FEATURE_LEVEL_10_1 (실제 카드에 따라 다름) 인 기기를 제공 할 것입니다. 새로운 비디오 카드를 구입할 시간.

+0

나는 컴퓨터를 바꿔야한다고 생각한다. 그러나 어떤 경우에는 내 질문에 대답 해 주셔서 감사합니다. – jyheng