Текстуры не отображаются - Cocos2D 2.0 Alpha - PullRequest
0 голосов
/ 03 ноября 2011

Я знаю, что Cocos2d 2.0 находится в альфа-версии и, очевидно, будет иметь определенные проблемы с ним.Я пытаюсь преобразовать несколько проектов для использования OpenGL 2.0 по нескольким причинам, но у меня возникла одна очень странная проблема.

Когда я запускаю сцену, мои текстуры загружаются по желанию, и все отлично работает.Затем я отображаю некоторые элементы пользовательского интерфейса Apple, которые позволяют мне покинуть сцену.Сцена и ее контроллер представления освобождены, директору говорят закончить, и я возвращаюсь к другому представлению.Затем я нажимаю кнопку UIB, которая снова запускает сцену.Сцена начинается снова и запускается, но текстур не видно.Шрифты загружаются и отображаются, аудио загружается и воспроизводится, но текстур не видно.При выводе информации из CCTextureCache я вижу, что требуемые текстуры доступны в кэше ([[CCTextureCache sharedTextureCache] dumpCachedTextureInfo]).Я также попытался очистить кэш до того, как сцена была возобновлена.Несмотря ни на что, я не вижу текстур и не добавляю узлы на сцену.

Возможно, что-то не так с тем, как я перезагружаю сцену или как настраивается EAGLView.Вот код для запуска указанной сцены из контроллера вида: </p> <p>(void)startGame {</p> <pre><code>CCDirector *director = [CCDirector sharedDirector]; EAGLView *glView = [EAGLView viewWithFrame:[self.view bounds]]; [director setOpenGLView:glView]; [self setView:glView]; [[CCTextureCache sharedTextureCache] removeUnusedTextures]; //[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; [[CCDirector sharedDirector] runWithScene:[Cocos2DChipmunkScene scene]]; }

Затем сцена завершается и вызывается следующее:

CCDirector *director = [CCDirector sharedDirector]; </p> <p>[[director openGLView] removeFromSuperview];</p> <p>[director end];<br>

Приведенный выше метод startGame вызывается снова, когда я пытаюсь запустить игру снова.В этот момент текстуры не отображаются.

Дайте мне знать, если мне нужно предоставить более подробную информацию по этому вопросу.

1 Ответ

1 голос
/ 03 ноября 2011

Я рекомендую не закрывать директор и сохранять openGLView в иерархии, просто установите его как скрытый: openGLView.hidden = YES;

Вы можете запускать и останавливать cocos2d с помощью [[CCDirector sharedDirector] startAnimation] соответственно stopAnimation.

...