程序使用win32开发,视频使用ffmpeg进行帧的截取,然后贴到OpenGL纹理中,渲染一个视频的话不用使用到多线程,处理能力足够快,但是现在需要渲染多个视频,不可能在主线程完成,两三个视频基本上窗口就卡死了。后来改用多线程,建立了两个OpenGL的上下文环境,一个线程负责更新纹理,主线程负责渲染,但是更新纹理的线程依然是照着视频一个个照顺序截,截完再通知主线程画出来,本来以为这样的结构应该没问题,结果渲染速度依然达不到要求,现在想问问有什么办法做到各个视频同步渲染呢,就是说视频的渲染是独立的。
建议将YUV拼接成一个数据然后通过opengl贴出来,而不是创建多个opengl
如果你只有一个视频源的话还有另2种方案:1是使用opengl重复的纹理坐标对应到不同的顶点坐标上,顶点坐标就是你要渲染的不同位置。可以参考文章:: https://blog.csdn.net/u012534831/article/details/103436518?spm=1001.2014.3001.5501 https://blog.csdn.net/u012534831/article/details/103436518?spm=1001.2014.3001.5501
2是将解码的帧交给两个窗口去渲染即可。