Прозрачный OpenGL
Бон Джорно, сеньоры! Я перевыпустил древнюю игру Dice 5, с которой собственно и начинал жизнь в необычном мире iOS разработки.Хочу поделиться полезным для многих режимом накладывания трехмерных объектов на стандартные красивые элементы управления и шрифты iOS.
В качестве десерта я расскажу о процессе одобрения игры в яблочном магазине и подглядывания за сотрудниками Apple Review Team. Вдруг кому пригодится? В статье будет много иностранных вордсов, потому что меня просто прет использовать их после запрета от нашей ГД.
Пример кодаНеобходимо создать прозрачный слой трехмерной графики и наложить его на классический UIView.В выбранном Вами UIViewControllere в тело функции viewDidLoad вставляете код #import «PlayViewController.h»
@interface PlayViewController () { GLKView *glkView; EAGLContext *context; }
— (void)viewDidLoad { [super viewDidLoad]; // это так надо всегда
// инициируем две переменные, которые подарят нам OpenGL ES1, а можно ES2 context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES1]; if (! context) { NSLog (@«Unable to create OpenGL context»); exit (1); } [EAGLContext setCurrentContext: context]; glkView = [[GLKView alloc] initWithFrame: self.view.frame ]; glkView.context = context; // делаем вот такую штуку для прозрачности // CAEAGLLayer *v = (CAEAGLLayer *)glkView.layer; v.opaque = NO; v.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
// добавляем к нашему UIView опенжлный glkView // [self.view addSubview: glkView];
// делаем , чтобы он пропускал нажатия // glkView.userInteractionEnabled = NO; } После этого, в цикле, Вы рисуете свои трехмерные штучки, и они катаются поверх кнопок и надписей. Каждый раз перед отображением объектов не забывайте очищать экран.
glViewport (0, 0, Width, Height); glClearColor (0.0f, 0.0f, 0.0f, 0.0f); // таким образом мы не затираем все то, что находится под графическим слоем glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); Просто, но важен порядок действий.
Все работает согласно документации iOS и OpenGL ES до тех пор, если Вы не начнете применять внутренний буффер для антиалайсинга.Прозрачные тени приобретут ненужный цвет, что является ошибкой. Возможно в iOS 8 это будет исправлено.
Публикация Как говорили большевики, лето — мертвый сезон для игр. Сотрудники Apple одобрили программу за 2 дня. Судите сами, в четверг я выложил приложение для проверки, уже в субботу пришел okey. При этом Apple Review Team честно запустило в пятницу вечером игру на своих пяти устройствах. Если они проверяют нас, почему бы нам не проверять их? Вот список Apple устройств
Внимательно приглядитесь, Review Team запустило приложение Dice 5 на двух iPad, iPad Mini, iPhone 4S и iPhone 5S.Судя по времени запуска, в Apple это происходит автоматически, а поутру сотрудники получают уведомление о поступлении новых приложений для проверки.
Вот таблица рекордсменов на сегодняшний день — среди них только 2 хабражителя.
Всем спасибо и хороших выходных.