GLKit 框架设计目标是为了简化OpenGL / OpenGL ES 的应用开发。它的出现加快了OpenGL E�S或OpenGL应用开发。
数学库,背景纹理加载,预先创建着色器效果,以及标准视图和视图控制器来实现渲染循环。
GLKit框架提供了功能和类,可以减少创建的基于着色器的应用程序所需要的工作量,或者支持依赖早期版本的OpenGL ES 或OpenGL 提供的固定着色器来实现渲染循环。
GLKView提供绘制场所(view)
GLKViewController(扩展于标准UIKit设计模式,扩展于UIKit设计模式,用于绘制视图内容的管理于呈现)
苹果弃用OpenGL ES ,但是iOS开发者可以继续使用。
使用GLKit视图呈现OpenGL ES内容:
11.png
GLKit基本代码实现:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//1.初始化上下文&设置当前上下文
/*
EAGLContext 是苹果iOS平台下实现OpenGLES 渲染层.
kEAGLRenderingAPIOpenGLES1 = 1, 固定管线
kEAGLRenderingAPIOpenGLES2 = 2,
kEAGLRenderingAPIOpenGLES3 = 3,
*/
context = [[EAGLContext alloc]initWithAPI:kEAGLRenderingAPIOpenGLES3];
//判断context是否创建成功
if (!context) {
NSLog(@"Create ES context Failed");
}
//设置当前上下文
[EAGLContext setCurrentContext:context];
//2.获取GLKView & 设置context
GLKView *view =(GLKView *) self.view;
view.context = context;
//3.设置背景颜色
glClearColor(1, 0, 0, 1.0);
}
#pragma mark -- GLKViewDelegate
//绘制视图的内容
/*
GLKView对象使其OpenGL ES上下文成为当前上下文,并将其framebuffer绑定为OpenGL ES呈现命令的目标。然后,委托方法应该绘制视图的内容。
*/
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
glClear(GL_COLOR_BUFFER_BIT);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
GLKit功能:
加载纹理
提供高性能的数学运算
提供常见的着色器
提供视图以及视图控制器
GLKit纹理加载:
name : OpenGL 上下文中的纹理名称
target: 纹理绑定的目标
height:加载的纹理高度
width:加载的纹理宽度
textureOrgin:加载纹理中的原点位置
alphaState:加载纹理alpha分量状态
containsMipmaps:布尔值,加载纹理是否包含mip贴图
GLTextureLoader简化从各资源中加载纹理
从URL加载纹理:
13.png 14.png 15.png 12.png
网友评论