在多个 GLKViewController 之间共享 VBO?
Posted
技术标签:
【中文标题】在多个 GLKViewController 之间共享 VBO?【英文标题】:Sharing VBOs among Multiple GLKViewControllers? 【发布时间】:2013-04-27 10:50:09 【问题描述】:我在后台线程中加载我的 3D 模型文件并加载它们的顶点、纹理和法线。这些模型被 2 个 GLKViewControllers 使用。我想要做的是将数据绑定到 VBO 并释放数据。然后我想在必要时使用这些绑定到这些 VBO,以减少加载时间并最大限度地减少内存使用。
【问题讨论】:
【参考方案1】:有很多方法可以做到这一点,其中最好的方法是创建一个完整的场景图。
但最基本的方法是创建一个类(例如,称为 'Mesh' ),它将您的 VBO GLuints 存储为类变量,并在 init 上创建和绑定所有内容。
然后简单地在两个视图控制器都可以访问的地方实例化 Mesh 类,理想情况下使用某种全局包装器,如 Singleton。
【讨论】:
我确实做到了,但是应用程序崩溃了,但我的应用程序没有任何崩溃报告。我有一个初始化 EAGLContext 的单例,将其设置为当前上下文并绑定缓冲区。第一个视图控制器加载正常,第二个加载正常。但重复此操作会使应用程序崩溃。我不会在任何地方发布上下文。 您是否同时加载两个视图控制器?你在单例的初始化中分配/初始化上下文吗?您是否尝试过在一个 VC 中执行上下文的分配/初始化,将其作为属性传递给单例,然后从第二个 VC 访问该属性? 刚试过,还是崩溃。我想知道它是否与GCD有关。但我多次检查以确保所有 OpenGL 命令都在主队列上发出。以上是关于在多个 GLKViewController 之间共享 VBO?的主要内容,如果未能解决你的问题,请参考以下文章