У меня есть проект, над которым я работаю, и он должен иметь возможность отображать и взаимодействовать с несколькими разными моделями. Одно из этих представлений является полноэкранным (Пейзажная ориентация iPad), а другие представляют собой меньшие подвиды. Проблемы, с которыми я сейчас сталкиваюсь, следующие:
Создание CCGLView вручную и применение его к разделяемому директору вызывает всевозможные ошибки GL, особенно связанные с методом swapBuffers CCGLView.
Поскольку директор Cocos3D является подклассом UIViewController, а также синглтоном, очень сложно/неприятно пытаться иметь несколько представлений в проекте без создания сложного стека для управления тем, где и какое представление в данный момент активно/должно быть отображается.
Наряду с этими факторами, общей иерархией проекта (из-за его полной пользовательской природы с использованием всех настраиваемых элементов управления) мне приходится использовать вложенный контроллер представления для управления навигацией между всеми различными контроллерами представлений в проекте. Соедините это с синглтоном, который позволяет взаимодействовать только с одним GLView в контексте Cocos3D, и вы увидите, где начинается беспорядок.
У кого-нибудь есть предложения, что делать? Если у вас есть какие-либо идеи о том, что я могу делать неправильно при создании экземпляра моего GLView, это тоже будет по крайней мере началом.
_director = CocosViewController.sharedDirector;
_director.supportedInterfaceOrientations = UIInterfaceOrientationMaskAll;
_director.viewShouldUseStencilBuffer = NO; // Set to YES if using shadow volumes
_director.viewPixelSamples = 1; // Set to 4 for antialiasing multisampling
_director.animationInterval = (1.0f / kAnimationFrameRate);
_director.displayStats = NO;
[_director enableRetinaDisplay: YES];
CCGLView *glView = [CCGLView viewWithFrame:_director.view.frame
pixelFormat:kEAGLColorFormatRGBA8
depthFormat:0 preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
glView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[_director setCcGLView:glView];
Просто это не работает и дает мне черный экран с ошибками OpenGL 0x502.