2017-03-29 16 views
0

noob質問: サポートされている解像度など、接続されたカメラからパラメータを取得する方法の例はありますか?DirectX 9 - カメラの解像度を取得していますか? (C++)

私は、デバイスを作成するためにDirectXの2010年6月 コードを使用しています:

HWND     m_hwnd; 
HDC      *phdc; 
IDirect3D9    *m_pD3D; 
IDirect3DDevice9  *m_pDevice; 
IDirect3DSwapChain9  *m_pSwapChain; 

HRESULT DrawDevice::CreateDevice(HWND hwnd) 
{ 
    if (m_pDevice) 
    { 
     return S_OK; 
    } 

    // Create the Direct3D object. 
    if (m_pD3D == NULL) 
    { 
     m_pD3D = Direct3DCreate9(D3D_SDK_VERSION); 

     if (m_pD3D == NULL) 
     { 
      return E_FAIL; 
     } 
    } 


    HRESULT hr = S_OK; 
    D3DPRESENT_PARAMETERS pp = { 0 }; 
    D3DDISPLAYMODE mode = { 0 }; 

    hr = m_pD3D->GetAdapterDisplayMode(
     D3DADAPTER_DEFAULT, 
     &mode 
    ); 

    if (FAILED(hr)) { return hr; } 

    hr = m_pD3D->CheckDeviceType(
     D3DADAPTER_DEFAULT, 
     D3DDEVTYPE_HAL, 
     mode.Format, 
     D3DFMT_X8R8G8B8, 
     TRUE // windowed 
    ); 

    if (FAILED(hr)) { return hr; } 

    pp.BackBufferFormat = D3DFMT_X8R8G8B8; 
    pp.SwapEffect = D3DSWAPEFFECT_COPY; 
    pp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; 
    pp.Windowed = TRUE; 
    pp.hDeviceWindow = hwnd; 

    hr = m_pD3D->CreateDevice(
     D3DADAPTER_DEFAULT, 
     D3DDEVTYPE_HAL, 
     hwnd, 
     D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, 
     &pp, 
     &m_pDevice 
    ); 

    if (FAILED(hr)) { return hr; } 

    m_hwnd = hwnd; 
    m_d3dpp = pp; 


    return hr; 
} 

私の目的は、ユーザーが選択するオプションのリストを提供することです...

感謝を!

答えて

0

モニタの解像度が必要な場合は、DXUT microsoft GuiライブラリまたはQTまたはカスタムを使用する必要があります。列挙型を作成し、画面の解像度を宣言する必要があります。私はあなたがどんな決議を好むか分かりません。

P.S.私はあなたがDX SDK 2010年6月に成功し、最新のWindowsとVisual Studio IDEを使用しているのかどうかはわかりません。単に、DirectX SDKのその種のものはMicrosoftによってこれ以上サポートされません。少なくともWindows 8.1バージョンのWindows SDKを使用する必要があります。お役に立てれば。

+0

私はモニターの解像度は必要ありませんが、接続されているカメラがサポートする解像度を得るには。 Windows 7、Visual Studio 2015でSDK 2010を使用しているプロジェクトはうまくいきます。 カメラからパラメータを取得する方法を知りたいだけです。 – Jahrk

0

Direct3Dは、カメラからの画像をキャプチャしないために、モニタにレンダリングするために使用されます。使用しているOSのバージョンに応じて、Media Foundationまたは従来のDirectShowをご覧ください。

Direct3D 9自体も旧式のDirectX SDKと同様に推奨されていません。 MSDNおよびthis postを参照してください。新しいプロジェクトでは、DirectX 11(またはWindows 10/Xbox Oneで高性能を目指す非常に経験豊かなDirect3Dグラフィックス開発者がDirectX 12を考慮する必要があります)を使用する必要があります。

Win32デスクトップアプリケーションの場合、このサンプルはGitHubにあります。

ユニバーサルWindowsプラットフォーム(UWP)アプリケーションの場合、このサンプルはGitHubにあります。

+0

答えをいただきありがとうございます.Media FoundationがWindowsで動作していないようです7、DirectShowで十分ではありません。 多分私はDirectX11を見ていきますが、とにかく、同じ質問もそれになります。 – Jahrk

+0

これは、使用しているMedia Foundationの側面によって異なります。 DirectXの詳細については、[DirectX 11.1およびWindows 7 Update](https://blogs.msdn.microsoft.com/chuckw/2013/02/26/directx-11-1-and-windows-7-update/)を参照してください。 11.1 DirectX 11ビデオと関連するMedia Foundationの変更を含むランタイム。 –

関連する問題