Несколько просмотров OpenGL (Cocos2D)

Примечание . Любой, кто может помочь мне правильно исправить это, получает 100 очков !

В моем приложении я смешиваю UIKit с Cocos2D вместе, я делаю некоторые простые пользовательские анимации просмотра, используя вызовы addSubview и removeFromSuperview. Недавно мне нужно было добавить еще один CCScene в мое приложение, чтобы избавиться от какого-то сложного кода UIKit, с которым легко справляется Cocos2D. Таким образом, у меня есть базовый вид в моем приложении, это UIViewController с некоторыми кнопками на нем. За этими кнопками находится CCGLView, который Cocos2D будет делать. Это отлично работает. Затем, когда я хочу перейти ко второму контроллеру представления (позвольте мне назвать его игровым представлением), после того, как я сделаю анимацию моего вида, вызвана viewdidload (вот где моя инициализация директора для второго CCScene), и ничего не происходит, или я получаю ошибки, как показано ниже в консоли. Теперь в моем первоначальном проекте ошибки ниже – это то, что я получаю, и в этом примере проекта ничего не происходит. Это ошибки:

OpenGL error 0x0501 in DrawSolidPolygon 104 OpenGL error 0x0502 in DrawSolidPolygon 104 OpenGL error 0x0501 in -[CCTextureAtlas drawNumberOfQuads:fromIndex:] 556 OpenGL error 0x0502 in -[CCTextureAtlas drawNumberOfQuads:fromIndex:] 556 OpenGL error 0x0502 in -[CCTextureAtlas drawNumberOfQuads:fromIndex:] 556 OpenGL error 0x0501 in -[CCParticleSystemQuad postStep] 411 OpenGL error 0x0506 in -[CCSprite draw] 532 OpenGL error 0x0502 in -[CCParticleSystemQuad draw] 434 OpenGL error 0x0502 in -[CCSprite draw] 532 OpenGL error 0x0502 in -[CCSprite draw] 532 

Теперь, когда у меня была одна сцена в моем оригинальном проекте, ничего подобного не происходит, только сейчас, когда я использую 2 CCScenes. Таким образом, код в образце проекта является довольно большой копией моего оригинального проекта, поэтому что-то неправильное в нем, скорее всего, приведет меня к устранению проблемы здесь и, надеюсь, избавится от этих ошибок OpenGL.

После нескольких часов тестирования и сбора информации кажется, что моя проблема аналогична: iOS и множественным представлениям OpenGL . Я также видел эту ссылку: http://gamesfromwithin.com/using-multiple-opengl-views-and-uikit . Однако обе эти ссылки не имеют для меня никакого смысла, так как я не знаю, как связать его с Cocos2D. Я думаю, что вся эта проблема является ограничением текущей версии Cocos2D, но если кто-то может загрузить мой проект и каким-то образом применить исправления прошлых двух ссылок к моему проекту и полностью исправить, это было бы здорово и исправить все мои проблемы!

Теперь версия Cocos2D в моем проекте является последней доступной для загрузки для версии 2.0. Если кто-то будет достаточно хорош, чтобы загрузить проект и посмотреть, что я делаю неправильно, я думаю, что это решит проблему для меня и других, которые испытывают проблемы, подобные моим.

Ниже приведена ссылка для ссылки на образец проекта с моей проблемой: http://www.gogofile.com/Default.aspx?p=sc&ID=634818635814123750_4340

Дополнение от 03.09.12 , я сейчас думаю просто связаться с @riq, основным создателем Cocos2D для iOS. Однако прежде чем я это сделаю, все уверены, что нет никакого способа иметь только один CCGLView, и я могу просто плюнуть на него в любом UIViewController, потому что технически я не буду использовать два представления, это будет просто одно общее представление между контроллерами. Возможно ли это?

2 Solutions collect form web for “Несколько просмотров OpenGL (Cocos2D)”

Хорошо, поэтому я узнал, что у меня есть 3 варианта :

1. @Riq сказал мне, что поддержка нескольких CCDirectors идет в версии 2.2, которая выйдет в мае 2013 года. Так что играйте в ожидающую игру, пока не появится бета-версия 2.2. Обновление : окончательный выпуск 2.1 вышел с середины июня, поэтому я бы предположил, что бета-версия 2.2 должна выйти в течение месяца или двух.

2. У вас есть только один UIViewController, который содержит CCGLView. Тогда независимо от того, какой UIViewController мне нужен glView, я бы просто использовал addChildViewController (iOS 5+), и я просто оставил бы этот UIViewController сохраненным при переключении представлений и просто заменил бы в это время (возможно, в обратном вызове завершения анимации UIView). Я думаю, что так будет работать, но я не уверен в его эффективности.

Редактировать : я использовал и полностью протестировал это решение, и, похоже, он отлично работает. Я рекомендую сделать это, пока не появится 2.2. Мое приложение работает на 60FPS и выглядит хорошо.

3. Я лично не пробовал ни одну из этих ссылок / тянуть запросы, и у меня тоже нет @Riq, так что это будет мой последний вариант. http://www.cocos2d-iphone.org/forum/topic/33480 И http://www.cocos2d-iphone.org/forum/topic/17821

Директор поддерживает только один просмотр gl. То, что вы хотите сделать, – это некоторые хитрости, такие как захват скриншота вашего gl-взгляда, чтобы сделать uiview, что вы можете перейти с другими вашими uiviews, а затем смените сцену на одного настоящего режиссера, а затем перейдите туда.

Поддержка нескольких просмотров в работе, но, возможно, несколько месяцев.

  • Мой первый контроллер представления xcode не действует, как другие. Зачем?
  • SpriteKit - как правильно приостановить и возобновить приложение
  • Приложение Xcode 4.2 iOS SDK 5 на основе вида
  • Как сделать просмотр изображений всегда центром экрана при масштабировании с помощью прокрутки?
  • Копировать IB Созданы ограничения на другой UIView
  • Сегментированный контроль над табличным представлением, но не в заголовке
  • Как поместить текущий контроллер и вернуться к предыдущему?
  • Горизонтальный стек Просмотр новой строки - Swift
  • iOS задает цвет фона для всех viewcontroller self.view's
  • Родной взгляд Представляя реальный взгляд на реакцию
  • Письмо и номер жест в iphone
  • Как программно настроить заголовок панели навигации?
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.