Opengl 我可以在QQuickFrameBufferObject之间重用FBO吗?

Opengl 我可以在QQuickFrameBufferObject之间重用FBO吗?,opengl,optimization,qml,qtquick2,fbo,Opengl,Optimization,Qml,Qtquick2,Fbo,我经常分配QQuickFramebufferObjects(QQFBO),然后快速释放它们。这会占用CPU。我设计的一种降低CPU使用率的方法是,在销毁其拥有的QQFBO后保留已分配的FBO,并将它们(作为渲染目标)提供给我在此之后分配的任何新QQFBO。这样我就节省了FBO分配/解除分配的开销。问题是,当QQFBO被销毁时,它也会销毁其拥有的FBO有什么方法可以实现我想要的吗? 注: 我所有的FBO都有相同的大小和格式 分析数据不支持我的优化思想,因为在这种情况下,我的分析程序会给我一些毫无

我经常分配QQuickFramebufferObjects(QQFBO),然后快速释放它们。这会占用CPU。我设计的一种降低CPU使用率的方法是,在销毁其拥有的QQFBO后保留已分配的FBO,并将它们(作为渲染目标)提供给我在此之后分配的任何新QQFBO。这样我就节省了FBO分配/解除分配的开销。问题是,当QQFBO被销毁时,它也会销毁其拥有的FBO有什么方法可以实现我想要的吗?

注:

  • 我所有的FBO都有相同的大小和格式
  • 分析数据不支持我的优化思想,因为在这种情况下,我的分析程序会给我一些毫无意义的结果

你有什么理由不能把这些东西放在身边?你为什么要把它们卖掉?@Nicolas:你是说QQFBO?我需要释放它们有两个原因:为了节省内存(当它们不需要动画时,我会用廉价的冒名顶替者替换它们)和在重新绘制时节省CPU使用(QtQuick会因为你有很多复杂的分配项而惩罚你)。@Nicolas:我可以重用整个QQFBO(比如,一个QFBO池),而不是释放,但那会有点牵连。“那会有点牵连”怎么说?你想要的是有一批FBO。无论哪种方式,您都必须拥有对象池的逻辑;唯一的问题是哪些对象进入该池。@Nicolas:FBO是“上下文无关”对象-您可以从上下文A中取出一个,将其移植到上下文B中,清除后,它将保持正常运行。FBO甚至可以“在上下文之外”存在于池中。然而,我的QQFBO子类的实例是“活动对象”。它们不可能存在于预期的环境之外。例如,我的QQFBO子类公开了一个
mouseArea
属性,该属性必须从外部分配,并连接到它的信号。您可以看到,在池中,不存在这样的mouseArea,因此sig连接将失败。绑定等也将如此。