Qt+DirectDraw实现

当Qt的图像绘制性能无法满足高要求时,本文介绍了如何利用DirectDraw(或者Direct3D)进行底层绘图。通过Qt的winId()方法获取窗口句柄,并结合DirectDraw API实现在Qt界面中显示高速视频。提供了相关源码和解决不同Qt版本编译问题的建议。
摘要由CSDN通过智能技术生成
Qt一般是用来写界面,而当系统对图片绘制速度要求较高时,Qt自带的图像绘制引擎往往不能达到我们的要求,这个时候我们就需要更加底层的绘图API,如DiretDraw(DirectDraw已经很旧了,目前使用的是Direct3D)。
在DirectDraw中,可以使用如下函数,将绘制操作映射到指定的窗口:
// create IDirectDraw interface 7.0 object and test for error
if (FAILED(DirectDrawCreateEx(NULL, (void **)&lpddIID_IDirectDraw7NULL)))
      return(0);

      // set cooperation to full screen
if (FAILED(lpdd->SetCooperativeLevel(m_pWnd->GetSafeHwnd(), DDSCL_NORMAL | DDSCL_NOWINDOWCHANGES)))
      return(0);
关于DirectDraw API的使用,可以参考《windows游戏编程大师技巧》第5-7章。

在MFC程序中,我们可以很容易的得到一个窗口的句柄pWnd,那如何在Qt程序获得Qt窗口(QWidget)的句柄呢?
很简单,直接调用winId()获得HWnd,然后通过FromHandle将HWnd转换成CWnd。
假设我们要在videoWidget(QWidget对象)上显示视频,调用如下代码即可。
m_ddraw = new MyDDraw(CWnd::FromHandle
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值