首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DirectX 9-获取相机分辨率?(C++)

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

Stack Overflow用户
提问于 2017-03-29 18:56:20
回答 2查看 284关注 0票数 0

noob问题:如何从连接的摄像头获取参数,例如支持的分辨率,有什么示例吗?

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

代码语言:javascript
运行
复制
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;
}

我的目的是给用户提供一个可供选择的选项列表...

谢谢!!

EN

回答 2

Stack Overflow用户

发布于 2017-03-30 01:57:57

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

附注:我不确定您是否会在6月份成功使用DX SDK 2010,也不确定您是否正在使用最新的Windows和Visual Studio IDE。简单地说,微软不再支持这种DirectX SDK了。您应至少使用Windows 8.1版本的Windows SDK。希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2017-03-30 13:08:33

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

与遗留的DirectX Direct3D一样,SDK9本身也被弃用。参见MSDNthis post。新的项目应该使用DirectX 11 (或者非常有经验的Direct3D图形开发人员在Windows10/ Xbox上寻找高性能应该考虑DirectX 12)。

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

对于Universal Windows Platform (UWP)应用程序,您应该在GitHub上查看此示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43091563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档