2010-09-02 2 views
1

У меня есть представление OpenGL, которое отображает 3D-модель. Это базовая модификация на Apples EAGLView. Это представление добавляется к представлению контроллера и отображается с помощью currentModalViewController:. Я хотел бы выполнить всю загрузку модели и конфигурацию состояния OpenGL в фоновом потоке при запуске приложения до того, как пользователь захочет отобразить представление. Это возможно? Могу ли я загружать текстуры, настраивать освещение и, как правило, просто все готово для рендеринга в фоновом потоке? Мой страх в том, что части приложения Cocoa приложения на главной панели будут манипулировать состоянием OpenGL, пока я настраиваю мой рендеринг в фоновом режиме. Конечно, контроллер будет отображен из основного потока. Этот уровень понимания OpenGl-ES - это не то, с чем я часто сталкиваюсь, поэтому, пожалуйста, будьте нееврейскими, если мой вопрос странный в любом случае :)Загрузите представление OpenGl в фоновом режиме. iPhone

ответ

1

Вы абсолютно можете выполнять загрузку фона по потоку. Некоторые из ключевых моментов: - Вероятно, не так много шансов переместить настройку состояния OGL в фоновый поток - общая сумма изменений, которые вы вызывали в контексте до начала первого розыгрыша, не складывается до тонны времени. Фоновая загрузка полезна для текстур и VBOs, а также время загрузки, которое должно произойти первым, чтобы получить данные для подачи в GL. - Вам нужно будет отделить контекст от основного потока и перенести его в рабочий поток. Мы делаем это, используя pthreads для «отправки» контекста работнику. - В нашем использовании мы скрываем представление GL, чтобы гарантировать, что его не нужно рисовать в состоянии загрузки. (Честно говоря, во время загрузки он может не содержать ничего полезного.) Таким образом, во время асинхронной загрузки видимый пользовательский интерфейс является не-GL Cocoa.

Этот подход более сложный, чем то, что вы делаете на рабочем столе: просто обменивайтесь объектами в двух контекстах (чтобы вы могли одновременно загружать и рисовать). Когда мы рассматривали этот подход более года назад, это было невозможно в IOS; возможно, сейчас, я не знаю.

Смежные вопросы