最近,我一直在为实时计划进行屏幕外GPU加速。
我想创建一个上下文并重复使用它几次(100+)。我正在使用OpenGL 2.1 and GLSL version 1.20
。
每次我重复使用上下文时,我都会做以下事情:
shaders
,链接program
然后glUsePrograme
(问题1:我应该重新链接program
还是每次重新创建program
?)< / LI>
FBO
和Texture
,然后将它们绑定,以便我可以进行屏幕外渲染。 (问题2:我应该销毁那些FBO
和Texture
)GL_Array_BUFFER
并在其中放置一些顶点数据。 (问题3:我甚至需要清理它吗?)glFinish()
,然后通过调用glReadPixels
将数据从GPU复制到CPU。还有其他必要的清理操作我应该考虑吗?
答案 0 :(得分:0)
如果你可以以某种方式缓存或以其他方式保留OpenGL对象ID,那么你不应该删除它们,而只是在下次运行时重用它们。除非您获得新的ID,否则重用旧的ID将替换现有对象(正确释放其分配)或仅更改其数据。
在glFinish
之前调用glReadPixels
是多余的,因为glReadPixels
会导致隐式同步并完成。