here의 코드 예제를 통해 DirectX를 배우고 있습니다. 저는 코드 세트 1, 6 장 상자 코드 예제에 있습니다. I의 DirectX 11 호환 기계를 6 장의 코드를 컴파일 할 때, 그것을 잘 실행하지만 box.cppDirectX 11 역 호환성
5.0//d3App.cpp.
//In InitDirect3D() method
D3D_FEATURE_LEVEL a[]={D3D_FEATURE_LEVEL_10_0};
HRESULT hr = D3D11CreateDevice(
0, // default adapter
md3dDriverType,
0, // no software device
createDeviceFlags,
a, 1, // 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;
//}
그리고 쉐이더와 다이렉트 X 11 머신에 다이렉트 X 10의 FEATURE LEVEL
에 그 코드를 실행하면 나는 다이렉트 X 10의 feature level
와 fx_4_0
에 쉐이더를 변경 한 경우
//Box.cpp
//In BuildFX() method
HRESULT hr = D3DX11CompileFromFile(L"FX/color.fx", 0, 0, 0, "fx_5_0", shaderFlags,
0, 0, &compiledShader, &compilationMsgs, 0);
그것은
//Box.cpp. Line 172
HR(mSwapChain->Present(0, 0));
에서 오류를했다, 그것은 0,123,006,985에 실패 DirectX 11 및 DirectX 10 모두에서입니다.
또한 DirectX 10 시스템에서 셰이더 fx_5_0
이있는 DirectX 10 기능 수준에서 실행하면 오류가 발생하지 않지만 아무 것도 수행하지 않습니다.
더 낮은 버전의 DirectX를 지원하는 컴퓨터와 호환되는 DirectX 11 API를 사용하여 응용 프로그램을 빌드 할 수 있습니까? 아들 인 경우 directX가 자동으로 처리합니까? 아니면 스스로 처리해야합니까?
Direct3D 11에 대한 레거시 D3DX 기능의 전체 목록은 [여기] (http://blogs.msdn.com/b/chuckw/archive/2013/08/21/living-without-d3dx)에서 확인할 수 있습니다. aspx). –
[Direct3D 11의 장치 분석] (http://blogs.msdn.com/b/chuckw/archive/2014/02/05/anatomy-of-direct3d-11-create-device)도 참조하십시오.aspx) 및 [Direct3D 기능 수준] (http://blogs.msdn.com/b/chuckw/archive/2012/06/20/direct3d-feature-levels.aspx) –
@ChuckWalbourn Outstanding. 메모 주셔서 감사. – Jeff