2017-01-21 20 views
0

에서 Direct3D 오류를 초기화하므로 C++ 언어와 DirectX 11에 익숙해지기 시작했습니다. 주로 배울 수있는 거대한 리소스가 있으므로 사용할 수 있습니다.rastertek 튜토리얼

튜토리얼은 여기 http://www.rastertek.com/dx11tut03.html

발견 된 문제는 다이렉트 X 11 비주얼 스튜디오 2010 프로그램이 정말하지 않는 일이다 할 수 있으며, 초기화 과정은 거짓

내 문제는 매우 간단 반환합니다. 그것은 Direct3D를 초기화하지 않으며, 오류가 없다. 단지 부울이 true와 같지 않다. 솔루션을 다운로드하면 동일한 결과가 발생합니다.

// Initialize the Direct3D object. 
result = m_D3D->Initialize(screenWidth, screenHeight, VSYNC_ENABLED, hwnd, FULL_SCREEN, SCREEN_DEPTH, SCREEN_NEAR); 
if(!result) 
{ 
    MessageBox(hwnd, L"Could not initialize Direct3D", L"Error", MB_OK); 
    return false; 
} 

전체 초기화 코드는 100 줄을 넘지 만 튜토리얼 페이지에서 확인할 수있는 모든 검사를 수행합니다.

나는 드라이버가 문제가있을 수 있다는 것을 발견하고 이걸 발견 : So there's one thing we can notice, the DDI is 10 instead of 11

그래서 내가 그 다이렉트 X 11을 실행하지 않고, 어떻게 문제를 해결하기 위해가있을 수 있습니다 문제인가?

도움 주셔서 감사합니다.

+0

* "내가 정말로 중요한 것을 놓치고있는 것은 아닐까?"- 예, a [mcve]. – IInspectable

+0

코드는 링크에서 찾을 수 있으며 광산은 1 : 1입니다. 자습서에서는이 문제에 대해 언급하지 않으므로 아무 문제가 없다고 생각합니다. 하지만 그 원인은 무엇입니까? –

+0

이 자습서는 분명히 * "최소"*는 아니며 여기 주변의 질문은 질문에 필수적인 경우 오프 사이트 콘텐츠에 연결하지 않아야합니다. – IInspectable

답변

2

이 실제로 튜토리얼에서 구체적으로 불려 : 사용자가 다이렉트 X 11 그래픽 카드가없는 경우이 함수 호출 장치 및 장치 컨텍스트를 만드는 데 실패 할

// Set the feature level to DirectX 11. 
featureLevel = D3D_FEATURE_LEVEL_11_0; 

참고. 또한 DirectX 11 기능을 직접 테스트하고 DirectX 11 비디오 카드가없는 경우 D3D_DRIVER_TYPE_HERWARE를 D3D_DRIVER_TYPE_REFERENCE로 바꿀 수 있으며 DirectX는 비디오 카드 하드웨어 대신 CPU를 사용하여 그릴 수 있습니다. 이 속도는 1/1000 속도로 실행되지만 DirectX 11 비디오 카드가없는 사람들에게는 모든 컴퓨터에 적합합니다. 당신의 dxdiag 이후

// Create the swap chain, Direct3D device, and Direct3D device context. 
result = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, 0, &featureLevel, 1, 
         D3D11_SDK_VERSION, &swapChainDesc, &m_swapChain, &m_device, NULL, &m_deviceContext); 
if(FAILED(result)) 
{ 
    return false; 
} 

는 10.0을 보여줍니다, 당신은 하드웨어와 D3D_FEATURE_LEVEL_11_0을 사용할 수 없습니다. rastertek 튜토리얼은 약간 날짜가 있기 때문에 D3D_FEATURE_LEVEL_10_0 또는 D3D_DRIVER_TYPE_WARP (하드웨어보다 느리지 만 기존 레퍼런스 드라이버보다 훨씬 빠른 소프트웨어 드라이버)를 사용할 수 있다고 언급하지 않습니다.

Direct3D Feature LevelsAnatomy of Direct3D 11 Create Device을 참조하십시오.

rastertek 자습서는 유용하지만 오래되었습니다. 특히 그들은 legacy DirectX SDK에서 많은 deprecated 콘텐츠를 사용합니다. 대신 새 버전의 Visual Studio (아마도 Community edition)로 업데이트하고 DirectX Tool Kit tutorial을 사용하는 것이 좋습니다. 일단 그 내용을 마스터하면 래스터 텍 튜토리얼로 돌아갈 수 있습니다.

+0

정보를 제공해 주셔서 감사 드리며 대신 Direct X 10을 사용하기로 결정했습니다. 광산처럼 속도가 중요합니다. 새 랩톱을 살 때 최신 VS로 업데이트 할 것이라고 생각합니다. 내 현재 프로젝트를 망칠 것입니다. –

+0

DirectX 10 API를 사용할 필요가 없으므로 사용하지 않아야합니다. 더 이상 사용되지 않으며 새 프로그램에서는 사용하지 않아야합니다. DirectX 11 API는 실제로 DirectX 10보다 * 더 많은 하드웨어를 지원하며 성능이 똑같거나 그 이상입니다. 문제는 사용중인 튜토리얼이''D3D_FEATURE_LEVEL_11_0'' 또는 더 나은 비디오 카드를 가지고 있다는 가정하에 제작되었습니다. _DirectX Tool Kit_ 자습서는 Direct3D Feature Level 9.3 이상의 하드웨어에서 작동합니다. –

+0

더 많은 메모리를 채우고 IDE를 변경하는 데 더 많은 시간을 할애하지 않으려면 Code :: Blocks 또는 VS2010을 따라갈 수 있습니까? –