我什么时候应该调用 glDeleteBuffersARB ?我应该在申请结束后做吗?我可以以某种方式自动化删除顶点缓冲区对象的过程吗?例如 smart_ptr 之类的东西。
绝不。你永远不应该打电话glDeleteBuffersARB
。十多年来,缓冲区对象一直是 GL 的核心功能;如果您仍在使用带有 ARB 后缀的扩展函数,STOP。如果您再次遵循使用它们的教程STOP;它显然太旧了,无法使用。
现在,你什么时候应该使用glDeleteBuffers http://www.opengl.org/wiki/GLAPI/glDeleteBuffers?您应该同时使用它delete
对于常规 C++ 对象。也就是说,当你finished与物体。当你不再需要它并想摆脱它时。
那么我可以使用析构函数为 vbo 创建类来删除 vbo 对象吗?然后创建对象作为 smart_ptr 来自动化一切?
你可以,但它不会给你带来那么多。另外,您运行非常真实等到删除对象时为时已晚的风险。
在创建 OpenGL 上下文(并使其成为当前上下文)之前或在 GL 上下文不是当前上下文(例如,在销毁 GL 上下文之后)时调用任何 OpenGL 函数都是非法的。这样做的尝试并不好。
如果你使用shared_ptr
为了管理这些资源,理论上它们有可能比实际的 OpenGL 上下文更长寿。那很糟。就我个人而言,我更喜欢一种更严格的管理方案,将 GL 对象的生命周期与上下文的生命周期牢固地联系在一起。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)