OpenGL ES简介:
OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。
iOS下环境搭建:
关于ios下环境搭建有好几种,最简单的是在新建工程的时候选择game模板,然后如下图所示:
不过,用这种方式,创建出来的工程有很多用不到的代码,不利于我们one by one的学习,所以,我们就从最简单的single view application工程说起,怎么一步步去搭建opengl es环境。
首先,创建一个single view application工程,然后,引入GlKit和OpenGLES。
紧接着,在ViewController.h文件里引入GLKit/GLKit.h,将ViewController类的父类改成GLKViewController。
#import <UIKit/UIKit.h>
#import <GLKit/GLKit.h>
@interface ViewController : GLKViewController
@end
然后将storyboard中ViewController所对应的view的Custom Class改成GLKView。
修改ViewController.m文件,代码如下:
#import "ViewController.h"
#import <OpenGLES/ES3/gl.h>
#import <OpenGLES/ES3/glext.h>
@interface ViewController ()<GLKViewDelegate>
{
EAGLContext *context; //EAGLContent是苹果在ios平台下实现的opengles渲染层,用于渲染结果在目标surface上的更新。
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];//这里用的是opengles3.
if (!context) {
NSLog(@"Failed to create ES context");
}
GLKView *view = (GLKView *)self.view;
view.context = context;
view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
[EAGLContext setCurrentContext:context];
glEnable(GL_DEPTH_TEST); //开启深度测试,就是让离你近的物体可以遮挡离你远的物体。
glClearColor(0.1, 0.2, 0.3, 1); //设置surface的清除颜色,也就是渲染到屏幕上的背景色。
}
- (BOOL)prefersStatusBarHidden {
return YES;
}
-(void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清除surface内容,恢复至初始状态。
}
@end
再次构建运行,如下图所示:
至此,一个初步的opengles3的开发环境已经搭建完毕,因为ios平台的特殊性,所以我们很多时候不得不借助ios下glkit库去实现和简化我们的操作,不过,对于大部分opengles的内容,我还是会脱离glkit,原汁原味的道出,这样,对于以后的跨平台是大有裨益的。
本文有不足之处,还望各位多多指正。