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;
}
我的目的是为用户提供一个选项列表...
谢谢!
答案 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也是如此。请参阅MSDN和this post。新项目应该使用DirectX 11(或者非常有经验的Direct3D图形开发人员在Windows 10 / Xbox One上寻求高性能应该考虑使用DirectX 12。)
对于Win32桌面应用程序,您应该在GitHub上查看此示例。
对于通用Windows平台(UWP)应用,您应该在GitHub上查看此示例。