2008. 7. 19. 15:54

DXUT D3D 10 NVIDIA PerfHUD 6 Launcher 적용해보기

#if SHIPPING_VERSION
    // When building a shipping version, disable PerfHUD (opt-out)
    #else
    // Look for 'NVIDIA PerfHUD' adapter
    // If it is present, override default settings
   
    IDXGIFactory *pDXGIFactory;
    ID3D10Device *pDevice;
    HRESULT hRes;
    hRes = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)&pDXGIFactory);
   
    // Search for a PerfHUD adapter.
    UINT nAdapter = 0;
    IDXGIAdapter* adapter = NULL;
    IDXGIAdapter* selectedAdapter = NULL;
    D3D10_DRIVER_TYPE driverType = D3D10_DRIVER_TYPE_HARDWARE;

    while (pDXGIFactory->EnumAdapters(nAdapter, &adapter) != DXGI_ERROR_NOT_FOUND)
    {
     if (adapter)
     {
      DXGI_ADAPTER_DESC adaptDesc;
      if (SUCCEEDED(adapter->GetDesc(&adaptDesc)))
      { const bool isPerfHUD = wcscmp(adaptDesc.Description, L"NVIDIA PerfHUD") == 0;
     
      // Select the first adapter in normal circumstances or the PerfHUD one if it exists.
     
      if(nAdapter == 0 || isPerfHUD)
       selectedAdapter = adapter;
     
      if(isPerfHUD)
       driverType = D3D10_DRIVER_TYPE_REFERENCE;
      }
     }
     ++nAdapter;
    }
    #endif
   
    //if(FAILED(D3D10CreateDevice( selectedAdapter, driverType, NULL, 0, D3D10_SDK_VERSION, &pDevice))) return E_FAIL;

    // If D3D10.1 doesn't exist, then fallback to D3D10.0
                hr = DXUT_Dynamic_D3D10CreateDevice( selectedAdapter, driverType, NULL, 0, NULL, D3D10_SDK_VERSION, &pd3d10Device );

                //// If D3D10.1 doesn't exist, then fallback to D3D10.0
                //hr = DXUT_Dynamic_D3D10CreateDevice( pAdapter, pNewDeviceSettings->d3d10.DriverType, ( HMODULE )0,
                //                                     pNewDeviceSettings->d3d10.CreateFlags,
                //                                     NULL, D3D10_SDK_VERSION, &pd3d10Device );

일단 이렇게만 하니까 되긴 하던데 펌프후드 실행한뒤에 머가 재대로 안되는듯...
차후 수정해서 정보 갱신하겠습니다.