2015-02-24 32 views
0

我正在创建一个视频播放器应用程序,我想知道什么是处理媒体更改操作的优化方法。调整OpenGL PBO的大小或重新创建OGL上下文

现在我使用2xPBO作为这里的解释:OpenGL Pixel Buffer Object(非常棒的网站顺便说一下)和一些纹理。为了保持完美的色彩和外观,我需要我的PBO和纹理与我的视频剪辑大小相同。 (在Shadder阶段调整大小只进行一次)。

所以基本上,如果实际的媒体像是1920x1080,但播放列表中的下一个是1280x720,我应该怎么做?我现在正在想2个解决方案:

  1. 在飞行
  2. 调整大小公益组织和纹理重塑一切,我的整个OpenGLPreviewWidget

我知道解决方法1是包括在溶液中2,但应我重新创建一个openGL上下文,窗口等,或者,因为它太慢,只是调整大小会做到这一点?

+0

创建一个全新的语境意味着很多关于司机的工作,说你有一个在虚拟机上运行,​​如C#或Java语言这将是重新分配一个int []缓冲区VS破坏VM实例之间的差异并用你想要的缓冲区创建一个新的。重新创建一个纹理是驱动程序,它的一些验证,内存分配和GPU转移要容易得多。 – TheStack 2015-02-24 11:31:24

回答

3

创建一个新的上下文是一个相当重量级操作,至少比大多数其他的事情,当你使用OpenGL,你会怎么做。所以除非你有充分理由说明你为什么需要一个新的环境,否则我会避免它。

重新分配PBO和对象很容易。正如您已经指出的那样,无论是哪种情况,最终都会这样做。如果这足够了,我认为这是一条路。

+0

谢谢你,这就是我想,但万一需要确认! – Nox 2015-02-24 18:52:36