调整 openGL PBO 的大小或重新创建 OGL 上下文

Resize openGL PBO's or recreate OGL context

我正在创建一个视频播放器应用程序,我想知道处理媒体更改操作的优化方法是什么。

现在我正在使用 2xPBO,如下所述:OpenGL Pixel Buffer Object(顺便说一下,这是一个非常棒的网站)和一些纹理。为了保持完美的颜色和外观,我需要我的 PBO 和我的纹理与我的视频剪辑大小相同。 (调整大小仅在着色器阶段完成一次)。

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

  1. 即时调整 PBO 和纹理的大小
  2. 重新创建一切,我的整个 OpenGLPreviewWidget

我知道解决方案 1 包含在解决方案 2 中,但是,我应该重新创建一个 openGL 上下文,windows,等等,还是因为它太慢了,只调整大小就可以了?

创建新上下文是一项相当繁重的操作,至少与您在使用 OpenGL 时会做的大多数其他事情相比是这样。因此,除非您有充分的理由需要新的上下文,否则我会避免使用它。

重新分配 PBO 和对象非常简单。正如您已经指出的那样,无论哪种情况,您最终都会这样做。如果仅此就足够了,我认为这就是要走的路。