2014-10-30 128 views
0

将整数句柄传递给我创建给其他类使用的多个VBO是否安全?OpenGL VBO处理

我的主类创建了一堆与gllenbuffers的句柄。 然后,我将这些句柄传递给子类,并将它们存储在该类中的变量中。 该类内部是通过glbufferdata实际上传数据的地方。

这样好吗?

+0

简答:是的,为什么不呢?正如你已经提到的句柄只是整数。 – BDL 2014-10-30 21:10:21

+0

这很好,或者你可以创建一个包装VBO(或多个VBO)的类。这样你可以更好地控制他们的生命周期。 – vesan 2014-10-31 05:10:42

回答

1

整数句柄只是OpenGL用来唯一标识VBO的名称,所以是的。有些人遇到的问题是,当存在多个OpenGL上下文时,并且您在另一个上下文中的一个上下文中使用VBO时,该VBO不存在。

只要确保你有一个计划,知道哪个元素会在你完成使用时清理句柄,而不会留下其他具有无效VBO名称的对象。

+0

这绝对是一个有效的问题,但如果正确创建上下文,则可以共享某些类型的对象(实际存储数据的类型)的名称空间,例如缓冲区对象和纹理对象。像WGL和GLX这样的低级API可以在创建上下文时执行此操作,而更高级别的框架(例如Qt,GLFW)通常允许您将句柄传递给另一个上下文以共享资源。 – 2014-10-30 21:26:36

+0

好点。我和iOS一起工作了很多,我们可以类似地创建可共享VBO,纹理等的OpenGL上下文的“ShareGroups”。正确的上下文之间的数据共享可能导致难以找出问题。 – MtRoad 2014-10-30 21:31:32