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;
}
我的目的是给用户提供一个可供选择的选项列表...
谢谢!!
发布于 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。希望这能有所帮助。
发布于 2017-03-30 13:08:33
Direct3D用于渲染到监视器,而不是从相机捕获图像。根据您使用的操作系统版本,您应该考虑使用Media Foundation或传统的DirectShow。
与遗留的DirectX Direct3D一样,SDK9本身也被弃用。参见MSDN和this post。新的项目应该使用DirectX 11 (或者非常有经验的Direct3D图形开发人员在Windows10/ Xbox上寻找高性能应该考虑DirectX 12)。
对于Win32桌面应用程序,您应该在GitHub上查看此示例。
对于Universal Windows Platform (UWP)应用程序,您应该在GitHub上查看此示例。
https://stackoverflow.com/questions/43091563
复制相似问题