2014-11-24 3 views
0

내 컴퓨터에 설치된 DirectX의 버전 정보 (주 버전 및 부 버전 정보)를 가져와야합니다. DirectXSetupGetVersion API를 사용했지만 DirectX 11과 함께 설치된 컴퓨터에 4.09.00.0904를 반환했습니다.이 값은 다음 위키 링크에 따르면 잘못되었습니다 : http://en.wikipedia.org/wiki/DirectX. 누구든지 DirectX의 정확한 버전 정보를 찾는 데 도움을 줄 수 있습니까? 당신이 "다이렉트 X 버전을"알고 싶어 왜 당신은 설명해야DirectX 버전 정보

감사합니다, Midhun

답변

0

.

이전 버전의 Windows (예 : Windows 9x/ME)를 다루지 않는 한, DirectX를 사용할 수있는 주된 방법은 OS 버전을 기반으로합니다. 이것은 "이 라이드 타기에 꼭 맞아야합니다"스타일 체크로 가장 잘 수행됩니다. 나는 this blog post에서이를 수행하는 방법에 대해 설명합니다. 설치자는 응용 프로그램이 아니라 응용 프로그램에서 수행해야합니다.

Direct3D 11의 경우 Windows Vista를 지원하려면 여기에 약간의 복잡성이 있습니다. 자세한 내용은 Direct3D 11 Deployment for Game Developers 문서 및 Direct3D 11 Install Helper 샘플을 참조하십시오.

일단 응용 프로그램이 시작되면 특정 버전을 사용할 수 있는지 확인하는 가장 좋은 방법은 장치 및/또는 해당 버전의 QueryInterface를 만드는 것입니다. Direct3D 11 최소 응용 프로그램의 경우이 내용은 Anatomy of Direct3D 11 Create Device에서 다루고 있습니다.

Windows XP에서 Direct3D 11을 사용하지 않는 것에 대해 걱정이된다면 '이 드라이브를 타고 올라야 만합니다.'라는 낮은 값을 확인하십시오. 암시 적이 아닌 명시 적으로 사용하십시오. 로드 해 엔트리 포인트를 얻어, Direct3D 11 장치를 생성한다.

static PFN_D3D11_CREATE_DEVICE s_DynamicD3D11CreateDevice = nullptr; 

if (!s_DynamicD3D11CreateDevice) 
{    
    HMODULE hModD3D11 = LoadLibrary(L"d3d11.dll"); 
    if (!hModD3D11) 
     // error 

    s_DynamicD3D11CreateDevice = reinterpret_cast<PFN_D3D11_CREATE_DEVICE>(GetProcAddress(hModD3D11, "D3D11CreateDevice")); 
    if (!s_DynamicD3D11CreateDevice) 
     // error, no Direct3D 11 present on the system 
} 

HRESULT hr = s_DynamicD3D11CreateDevice(...); 
if (FAILED(hr)) 
    // error 

기억해야 할 또 다른 점은 "DirectX 버전"이 의 DirectX 최종 사용자 런타임 (일명 DirectSetup, DXSETUP, DXWSETUP가) 실제로 Windows에서 무엇을 함께 할 수있는 모든에서 절대적으로 아무 상관이 없다는 것입니다 Windows XP 서비스 팩 2부터 시작하십시오. No So Direct Setup을 참조하십시오. D3DX, XAudio2.7, XACT, XInput 1.3, Managed DirectX 1.1 등을 확인해야하는 경우에는 명시 적으로 올바른 DLL을로드해야합니다.