美文网首页
OpenGLES入门 1 -- 配置

OpenGLES入门 1 -- 配置

作者: Krien | 来源:发表于2017-10-23 16:48 被阅读127次

    前言:

    本文主要是记录自己学习OpenGLES的一些过程,如果有幸能帮助到看到本文的读者,那就更好了

    概念:

    OpenGLES 1.X: 固定管道编程
    OpenGLES 2.0:可编程3D图形管道,可以创建着色器和程序对象,并且能够在OpenGL ES着色语言中编写顶点和片段着色器
    OpenGLES 3.0:拓展了2.0,对渲染管线的多重增强,大幅增强纹理功能等

    详情有兴趣的可以去官网查看(访问速度很慢)

    环境

    Xcode8.3+OpenGLES2.0

    正文

    1、 创建上下文

     //init context
    _eaglContext =[[EAGLContext alloc]initWithAPI:kEAGLRenderingAPIOpenGLES2];
    [EAGLContext setCurrentContext:_eaglContext];
        
    //init layer
    _layer =[[JFCAEGLayer alloc]initWithFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)];
    [self.view.layer addSublayer:_layer];
    

    2、绑定帧缓存和渲染缓存对象

    渲染缓存:存储绘制结果的缓冲区
    帧缓存:接收渲染结果的缓冲区,为GPU指定存储渲染结果的区域。
    glGenRenderbuffers(1,&_colorRenderBuffer);
    glBindRenderbuffer(GL_RENDERBUFFER,_colorRenderBuffer);
    [_eaglContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:_layer];
    
    glGenFramebuffers(1,&_frameBuffer);
    glBindFramebuffer(GL_FRAMEBUFFER,_frameBuffer);
    //绑定渲染缓冲区到帧缓冲区
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0
                                  , GL_RENDERBUFFER, _frameBuffer);
    

    3、清屏渲染

    glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
    //GL_COLOR_BUFFER_BIT:   当前可写的颜色缓冲
    //GL_DEPTH_BUFFER_BIT:   深度缓冲
    //GL_ACCUM_BUFFER_BIT:   累积缓冲
    //GL_STENCIL_BUFFER_BIT: 模板缓冲
    glClear(GL_COLOR_BUFFER_BIT);
    [_eaglContext presentRenderbuffer:GL_RENDERBUFFER];
    

    实现效果如下:


    效果图.png

    具体代码已上传到github,详情请见OpenGLES
    推荐一个学习OpenGL的教程
    如果想学习更详细的OpenGLES的知识,推荐落影loyinglin酷走天涯

    相关文章

      网友评论

          本文标题:OpenGLES入门 1 -- 配置

          本文链接:https://www.haomeiwen.com/subject/riyouxtx.html