我正在开发一个应用程序,但遇到了一个问题,我似乎无法找到解决方案。该应用程序是用 vc++ 编写的。我需要做的是显示 YUV 视频源,并在其顶部显示文本。
现在,它可以通过使用 GDI 在 OnPaint 方法中绘制文本以及在 DirectDraw 覆盖上绘制视频来正常工作。我需要摆脱覆盖层,因为它会导致很多问题。它不适用于某些显卡、vista、7 等。
我想不出一种方法以更兼容的方式完成同样的事情。我可以使用带有后台缓冲区的 DirectDraw 绘制视频并将其复制到主缓冲区就好了。这里的问题是,由于视频刷新的次数,在 GDI 中绘制的文本会闪烁。如果可能的话,我真的很想保持绘制文本的代码完整,因为它运行良好。
有没有办法将文本直接绘制到 DirectDraw 缓冲区或内存缓冲区或其他东西,然后将其 blt 到后台缓冲区?我应该一起考虑另一种方法吗?两个重要的操作系统是 XP 和 7。如果有人有任何想法请告诉我,我将对其进行测试。谢谢。
尝试查看 microsoft.com 上的 DirectShow 和 Ticker 示例:
DirectShow 股票代码示例
此示例使用视频混合渲染器来混合视频和文本。它使用 IVMRMixerBitmap9 接口将文本混合到视频窗口的底部。
DirectShow 用于构建过滤器图来播放音频或视频流,添加不同的过滤器以实现不同的效果以及视频和音频样本的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)