2013-04-27 3 views
0

Я загружаю свои файлы трехмерных моделей и загружаю их вершину, текстуру и обычный во время запуска приложения в фоновом потоке. Эти модели используются 2 GLKViewControllers. То, что я хочу сделать, это привязать данные к VBO и выпустить данные. Затем я хочу использовать эти привязки к этим VBOs, когда это необходимо, чтобы уменьшить время загрузки и минимизировать использование памяти.Обмен VBOs среди нескольких GLKViewControllers?

ответ

0

Есть много способов, которыми вы могли бы это сделать, лучшим из которых было бы создание полного графика сцены.

Но самым основным подходом было бы создание класса (называемого, например, «Mesh»), который хранит ваши VBO GLuints в качестве переменных класса и создает и связывает все в init.

Затем просто создайте экземпляр класса Mesh, доступ к которому можно получить с помощью обоих контроллеров представления, в идеале используя какую-то глобальную оболочку, такую ​​как Singleton.

+0

Я сделал именно это, но приложение аварийно отключилось без отчета о сбоях для моего приложения. У меня есть синглтон, который в EAGLContext, устанавливает его как текущий контекст и связывает буферы. Первый контроллер представления загружается отлично, второй тоже загружается нормально, но повторение этого приводит к сбою приложения. Я нигде не раскрываю контекст. –

+0

Вы загружаете оба контроллера вида одновременно? Вы выделяете/инициализируете контекст в init синглтона? Пробовали ли вы использовать alloc/init контекста в одном VC, передавая его как свойство одноточечному, а затем доступ к этому свойству из второго VC? – AlunAlun

+0

Просто попробовал это, все еще падает. Интересно, связано ли это с GCD. Но я проверял несколько раз, чтобы убедиться, что все команды OpenGL выпущены в основной очереди. –