Ahoy!
Я пытался обновить старый тестовый код, пытаясь освежить в памяти новые функции, добавленные в GLKit. До сих пор мне удалось настроить GLKViewController и начать рендеринг некоторых основных фигур, но я изо всех сил пытался найти какую-либо приличную информацию о GLKBaseEffect.
Документация GLKBaseEffect гласит:
Во время инициализации ваше приложение сначала создает контекст OpenGL ES 2.0 и делает его текущим. Затем он выделяет и инициализирует новый объект эффекта, настраивает его свойства и вызывает его метод prepareToDraw. Привязка эффекта приводит к компиляции шейдера и привязке к текущему контексту OpenGL ES. Базовый эффект также требует предоставления вершинных данных вашим приложением. Чтобы предоставить данные вершины, создайте один или несколько объектов массива вершин. Для каждого атрибута, требуемого шейдером, объект массива вершин должен включать атрибут и указывать на данные, хранящиеся в объекте буфера вершин.
Что я изо всех сил пытаюсь различить, так это;
Нужен ли мне объект GLKBaseEffect для каждой "модели", которую я рендерил? Или я использую один GLKBaseEffect для каждой "сцены" и просто изменяю свойства на лету перед вызовом prepareToDraw?
Я видел несколько учебных пособий для игровых движков и средств визуализации, которые просто используют один GLKBaseEffect для каждой модели, но это кажется совершенно неэффективным, если того же можно достичь с помощью одного экземпляра.
Из прочтения документации почти кажется, что это лучший подход, но, учитывая, что я видел очень много людей, использующих несколько экземпляров, я начинаю думать, что это не так.
Может кто-нибудь пролить свет на это? GLKit все еще довольно плохо знаком с iOS (и для меня), поэтому любая информация будет принята с благодарностью.