DirectX 9 - 获取相机分辨率? (C ++)

时间:2017-03-29 10:56:20

标签: c++ camera directx directx-9

noob问题: 有关如何从连接的摄像机获取参数的任何示例,例如支持的分辨率?

我在2010年6月使用DirectX。 用于创建设备的代码:

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;
}

我的目的是为用户提供一个选项列表...

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您需要Monitor分辨率,您应该使用DXUT microsoft Gui库或QT或自定义,您应该使用枚举类型并声明屏幕分辨率。我不知道你喜欢什么样的分辨率。

P.S。我不确定您是否会使用DX SDK 2010 June,如果您使用的是最新的Windows和Visual Studio IDE。只是那种DirectX SDK不再受微软支持。您应该至少使用Windows SDK版本的Windows SDK。希望这可以帮助。

答案 1 :(得分:0)

Direct3D用于渲染监视器,而不是从摄像机捕获图像。根据您使用的操作系统版本,您应该查看Media Foundation或旧版DirectShow

Direct3D 9本身也被弃用,传统的DirectX SDK也是如此。请参阅MSDNthis post。新项目应该使用DirectX 11(或者非常有经验的Direct3D图形开发人员在Windows 10 / Xbox One上寻求高性能应该考虑使用DirectX 12。)

对于Win32桌面应用程序,您应该在GitHub上查看此示例。

对于通用Windows平台(UWP)应用,您应该在GitHub上查看此示例。