02总结--015--OpenGL ES 中 GLKit 初探

2020-07-26  本文已影响0人  修_远
TOC

GLKit 框架概述

GLKit 概念

GLKit 框架的设计⽬标是为了简化基于OpenGL / OpenGL ES 的应⽤开发。它的出现
加快OpenGL ES或OpenGL应用程序开发。使⽤数学库,背景纹理理加载,预先创建的着色器效果,以及标准视图和视图控制器来实现渲染循环。GLKit框架提供了了功能和类,可以减少创建新的基于着色器的应用程序所需的⼯作量,或者⽀持依赖早期版本的OpenGL ES或OpenGL提供的固定函数顶点或⽚段处理的现有应⽤程序。

苹果弃用OpenGL ES ,但iOS开发者可以继续使用。
苹果弃用OpenGL ES ,但iOS开发者可以继续使用。
苹果弃用OpenGL ES ,但iOS开发者可以继续使用。

GLKit 呈现OpenGL ES流程

image

GLKit 代码

- (void)viewDidLoad{ 
    [super viewDidLoad];
    
    //创建OpenGL ES上下文并将其分配给从故事板加载的视图
    GLKView * view =(GLKView *)self.view;
    view.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
    
    //配置视图创建的渲染缓冲区
    view.drawableColorFormat = GLKViewDrawableColorFormatRGBA8888;
    view.drawableDepthFormat = GLKViewDrawableDepthFormat24; 
    view.drawableStencilFormat = GLKViewDrawableStencilFormat8;

    //启⽤用多重采样
    view.drawableMultisample = GLKViewDrawableMultisample4X;
}
-(void)drawRect:(CGRect)rect
{
    //清除帧缓冲区
    glClearColor(0.0f,0.0f,0.1f,1.0f); 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    //使⽤先前配置的纹理,着⾊器和顶点数组绘制 
    glBindTexture(GL_TEXTURE_2D,_planetTexture); 
    glUseProgram(_diffuseShading); 
    glUniformMatrix4fv(_uniformModelViewProjectionMatrix,1,0,_modelViewProjectionMatrix.m); 
    glBindVertexArrayOES(_planetMesh); 
    glDrawElements(GL_TRIANGLE_STRIP,256,GL_UNSIGNED_SHORT);
}

GLKit 功能

GLKit 纹理加载

GLKTextureInfo 创建OpenGL 纹理信息

2. GLTextureLoader 简化从各种资源文件中加载纹理

GLKView 使⽤OpenGL ES 绘制内容的视图默认实现

1. 初始化视图

2. 代理

3. 配置帧缓存区对象

4. 帧缓存区属性

5. 绘制视图的内容

6. 删除视图FrameBuffer对象

GLKViewDelegate ⽤于GLKView 对象回调⽅法

绘制视图的内容:- glkView:drawInRect:绘制视图内容 (必须实现代理)

GLKViewController 管理OpenGL ES 渲染循环的视图控制器

1. 更新

2. 配置帧速率

3. 配置GLKViewController 代理

4. 控制帧更新

5. 获取有关View 更新信息

GLKViewControllerDelegate 渲染循环回调方法

  1. 处理更新事件
  1. 暂停/恢复通知

GLKBaseEffect 一种简单光照/着⾊系统,用于基于着⾊器OpenGL 渲染

1. 命名Effect

2. 配置模型视图转换

3. 配置光照效果

4. 配置光照

6. 配置纹理

7, 配置雾化

8. 配置颜⾊信息

9. 准备绘制效果

上一篇下一篇

猜你喜欢

热点阅读