MFC+OpenGL显示视频流图片

本文介绍了如何在MFC应用程序中利用OpenGL显示视频流,通过创建Picture Control控件和设置双缓冲区来实现。文章详细讲解了初始化过程,包括在对话框类中定义双缓冲区、初始化OpenGL属性,并在OnTimer事件中处理更新。最终,作者展示了成功运行的效果。
摘要由CSDN通过智能技术生成

由于想做一个应用软件,把目前自己的算法应用出去,给给为研究者提供一丢丢便利,需要在MFC中显示视频流文件。我尝试了两种方法:opencv+MFC;openGL+MFC;这两种方法都可行。但是在使用opencv+MFC时,以为是设置双缓冲处有点问题,导致视频流闪烁严重。(实际是读取视频的问题,修改后应该可行,后面改用opengl做了,也出现了这样的问题,后来修改好了)。

1、首先需要加载一个Picture Control的控件;设置ID等
2、在CTrackingAppDlg.h(XXXDlg.h)中定义双缓冲区:

    HDC _hrenderDC; //DC
    HGLRC _hrenderRC; //RC

添加两个初始化函数:

bool CTrackingAppDlg::SetWindowPixelFormat(HDC hDC)
{
    PIXELFORMATDESCRIPTOR pixelDesc;  

    pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR);  

    pixelDesc.nVersion = 1;  
    pixelDesc.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL |PFD_DOUBLEBUFFER |PFD_TYPE_RGBA;

    pixelDesc.iPixelType = PFD_TYPE_RGBA;
    pixelDesc.cColorBits = 32;
    pixelDesc.cRedBits = 0;  
    pixelDesc.cRedShift = 0;
    pixelDesc.cGreenBits = 0;
    pixelDesc.cGreenShift = 0;
    pixelDesc.cBlueBits = 0;
    pixelDesc.cBlueShift = 0;  
    pixelDesc.cAlphaBits = 0;  
    pixelDesc.cAlphaShift = 0;  
    pixelDesc.cAccumBits = 0;  
    pixelDesc.cAccumRedBits = 0;  
    pixelDesc.cAccumGreenBits = 0;  
    pixelDesc.cAccumBlueBits
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值