OpenGL

02-OpenGL ES GLKit常用API解析

2019-06-03  本文已影响0人  SPIREJ

GLKit框架的出现

GLKit 框架的设计⽬标是为了简化基于OpenGL / OpenGL ES 的应用开发。它的出现加快OpenGL ES或OpenGL应⽤程序开发。 使⽤数学库,背景纹理加载,预先创建的着色器效果,以及标准视图和视图控制器来实现渲染循环。

GLKit框架提供了功能和类,可以减少创建新的基于着色器器的应用程序所需的⼯作量,或者⽀持依赖早期版本的OpenGL ES或OpenGL提供的固定函数顶点或片段处理的现有应⽤程序。

GLKView 提供绘制场所(View)
GLKViewController(扩展于标准的UIKit 设计模式. ⽤于绘制视图内容的管理与呈现)

GLKit 主要的功能

GLKit 主要的功能如下:

GLKit常用API解析

1.GLKTextureInfo 创建OpenGL纹理信息

name : OpenGL 上下⽂中纹理名称
target : 纹理绑定的⽬标
height : 加载纹理的高度
width : 加载纹理的宽度
textureOrigin : 加载纹理中的原点位置
alphaState: 加载纹理中alpha分量状态
containsMipmaps: 布尔值,加载的纹理是否包含mip贴图

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

3.GLKView使用OpenGL ES绘制内容的视图默认实现

4.GLKViewDelegate用于GLKView对象回调⽅法

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

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

//处理更新事件
//在现实每个帧之前调用
- (void)glkViewControllerUpdate:(GLKViewController *)controller;
//暂停/恢复通知
//在渲染循环暂停或回复之前调用
- (void)glkViewController:(GLKViewController *)controller willPause:(BOOL)pause;

6.GLKBaseEffect一种简单光照/着色系统,⽤于基于着⾊器OpenGL渲染

@interface GLKBaseEffect : NSObject <GLKNamedEffect>
{
    @protected
    
    // Switches to turn effect features on and off
    GLboolean                           _colorMaterialEnabled;
    GLboolean                           _fogEnabled;
    
    // Modelview, projection, texture and derived matrices for transformation
    GLKEffectPropertyTransform          *_transform;

    // Lights
    GLKLightingType                     _lightingType;
    GLKEffectPropertyLight              *_light0, *_light1, *_light2;

    // Material for lighting
    GLKEffectPropertyMaterial           *_material;

    // GL Texture Names
    GLKEffectPropertyTexture            *_texture2d0, *_texture2d1;

    // Texture ordering array
    NSArray                             *_textureOrder;
    
    // Constant color (fixed color value to supplant the use of the "color" named vertex attrib array)
    GLKVector4                          _constantColor;

    // Fog
    GLKEffectPropertyFog                *_fog;

    // Label for effect
    NSString                            *_label;
}
上一篇下一篇

猜你喜欢

热点阅读