美文网首页
iOS开发之OpenGL ES (十) GLKit详解

iOS开发之OpenGL ES (十) GLKit详解

作者: Hiphone_e365 | 来源:发表于2019-06-09 12:26 被阅读0次

    1、GLKit简介

    GLKit框架的设计目标是苹果为了简化OpenGL/OpenGL ES 的应用开发。加快OpenGL/OpenGL ES的开发速度,使用数学库,背影纹理加载,预先创建的着色器效果,以及标准视图(GLKView)和试图控制器(GLKViewController)来实现渲染循环

    2、GLKIT关键特性

    关于纹理

    苹果封装了GLKTextureLoader类进行纹理加载,只需几行代码,可以轻松的加载各种纹理资源,甚至可以在app后台异步加载。

    关于数学计算

    数学库提供了向量、四元数、矩阵运算等。计算获得优化以提供较好的性能

    关于着色器

    苹果提供Effect类实现着色器效果。主要包括三个着色效果如下,用来解决着色器复杂的用法,可以了解下GLSL的复杂

    GLKBaseEffect:在GLKit中使用最高频。提供了投影光照和着色的功能,提供了三个光照(light0,light1,light2),两个纹理(texture2d0,texture2d1)。如果这些不满足需求,则需要自定义着色器。

    GLKReflectionMapEffect用于基于着色器的OpenGL渲染的支持反射映射的照明和着色系统

    GLKSkyboxEffect:用于基于着色器的OpenGL渲染的一个简单的天空盒视觉效果

    关于视图

    GLKViewGLKViewController 提供OpenGL ES视图和试图控制器的实现。减少了OpenGL ES创建 iOS应用程序所需的代码量(比如GLSL创建program那些)

    3、GLKIT呈现OpenGL ES的内容

    要想用GLKView,首先为其提供OpenGL ES上下文。然后设置颜色缓冲区格式drawableColorFormat,深度缓冲区格式drawableDepthFormat,模板缓冲区格式drawableStencilFormat,多重采样缓冲区格式drawableMultisample,通过以上设置来配置帧缓冲区格式(framebuffer)。然后,只要是此GLView需要重新绘制的时候,它就会自动创建或者更新framebuffer。

    说到View的重新绘制,那就是drawRect方法,当调用drawRect之前,上面说了,首先为其提供OpenGL ES上下文,绑定它的framebuffer到OpenGL的上下文作为渲染命令的target,一旦此渲染命令告知绘制返回,就会将数据传递到Core Animation实现画面。

    app的drawRect方法,应该调用一个或者多个OpenGL ES函数将对象呈现到framebuffer上,此时,视图解析通过多重采样(multisampling)来完成传递。有一点要注意的是,绘图方法只能修改framebuffer的内容,不能从framebuffer中读取像素信息,或者修改framebuffer对象。或者修改OpenGL ES函数的其他属性。相反我们要依赖GLView提供的属性和方法。

    4、(GLKView)和试图控制器(GLKViewConitroller)以及案例解析

    首先要创建继承于GLKViewController的视图,总共大致分三部 + 一部绘制

    1、OpenGL ES初始化

    2、加载顶点、纹理坐标数据

    3、加载纹理

    4、绘制纹理

    源码地址:https://github.com/Hiphone-Du/GLKit

    备注:图片引用:简书@CC老师_HelloCoder

    相关文章

      网友评论

          本文标题:iOS开发之OpenGL ES (十) GLKit详解

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