Transparent opengl

    image

    Bon Jorno, seniors!
    I re-released the ancient game Dice 5 , with which I actually started life in the unusual world of iOS development.
    I want to share useful for many modes of imposing three-dimensional objects on standard beautiful iOS controls and fonts.

    As a dessert, I'll talk about the process of approving a game in an apple store and peeping at Apple Review Team employees. Suddenly, who will come in handy?
    There will be many foreign words in the article , because I’m just rushing to use them after the ban from our State Duma.



    Code example


    You need to create a transparent layer of three-dimensional graphics and apply it to the classic UIView.
    In the UIViewControllere of your choice, paste the code into the body of the viewDidLoad function

    #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;
    }
    


    After that, in a loop, you draw your three-dimensional little things, and they roll over the buttons and labels. Every time before displaying objects do not forget to clear the screen.

        glViewport(0, 0, Width, Height);
        glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // таким образом мы не затираем все то, что находится под графическим слоем
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    


    Simple but important procedure.

    Everything works according to the documentation of iOS and OpenGL ES until you start using the internal buffer for anti-aliasing .
    Transparent shadows will become unnecessary color, which is a mistake. Perhaps in iOS 8 this will be fixed.

    Publication


    As the Bolsheviks said, summer is a dead season for games. Apple employees approved the program in 2 days. Judge for yourself, on Thursday I posted the application for verification, okey came on Saturday . At the same time, the Apple Review Team honestly launched a game on its five devices on Friday night. If they test us, why not test them?

    Here's a list of Apple devices
    image

    Take a closer look, Review Team has launched the Dice 5 app on two iPad, iPad Mini, iPhone 4S and iPhone 5S.
    Judging by the launch time, this happens automatically at Apple, and in the morning employees receive a notification about new applications for verification.

    Here is the table of record holders for today - among them there are only 2 hawkers.
    image

    Thank you all and have a nice weekend.

    Also popular now: