我目前正在从事一个涉及LWJGL的项目。我知道在C和C ++中应该调用诸如glDeleteBuffers
,glDeleteVertexArrays
之类的函数来释放内存。但是,Java具有垃圾回收器,这通常意味着在JVM关闭时会释放所有内存。
使用Java时是否需要调用glDelete*
?
也许我应该只对那些不再需要提高性能的对象调用这些函数。
最佳答案
OpenGL对象不是Java的垃圾收集方案的一部分,我的理解是LWJGL不会做任何尝试将它们包装到可以自动收集它们的内容中(因为这样做非常困难)。
程序终止时,所有您不删除的OpenGL对象最终都会被销毁,因此主要的担心是,如果您在一段时间内运行应用程序,然后将不需要的东西放到地板上而不是删除它们。对于只需要在开始时加载一些东西并运行的简单应用程序,这很好。对于任何非常复杂的事情,您将不得不花点时间删除不使用的对象。