openGL ES 2.0开发流程

本文详细介绍了如何使用OpenGL ES 2.0进行iOS应用开发的基础步骤,包括必要的框架添加、OpenGL视图配置、上下文创建、渲染缓冲区及帧缓冲区的设置等内容。

一:添加必须的framework(框架)

OpenGLES.frameworks和QuartzCore.framework


二:修改OpenGLView.h

引入OpenGl的Header,创建一些后面会用到的实例变量

CAEAGLLayer* _eaglLayer;

EAGLContext* _context;

GLuint _colorRenderBuffer;


三:设置layer class为CAEAGLLayer

+ (Class)layerClass{

return [CAEAGLLayer class];

 }

想要显示OpenGL的内容,需要把它缺省的layer设置为一个特殊的layer。(CAEAGLLayer)。这里通过直接复写layerClass的方法。


四:设置layer为不透明(Opaque)


- (void)setupLayer{

_eaglLayer = (CAEAGLLayer*)self.layer;

_eaglLayer.opaque = YES;

 }

因为缺省的话,CALayer是透明的。而透明的层对性能负荷很大,特别是OpenGL的层。(如果可能,尽量都把层设置为不透明。另一个比较明显的例子是自定义tableView cell)


五:创建OpenGL context

-(void)setupContext{

EAGLRenderingAPI api = kEAGLRenderingAPIOpenGLES2;

_context = [[EAGLContext alloc] initWithAPI:api];

if(!_context) {

NSLog(@“Failed to initialize OpenGLES 2.0 context”);

 exit(1)

  }

if(![EAGLContext setCurrentContext:_context]) {

NSLog(@“Failed to set current OpenGL context”);

exit(1);

 }

 }

无论你要OpenGL帮你实现什么,总需要这个EAGLContext。EAGLContext管理所有通过OpenGL进行draw的信息。这个与Core Graphics context类似。当创建一个context,要声明需要哪个version的API。这里,选择OpenGL ES 2.0。(容错处理,如果创建失败了,我们的程序会退出)


六:创建render buffer(渲染缓冲区)

-(void)setupRenderBuffer{

glGenRenderbuffers(1, &_colorRenderBuffer);

glBindRenderbuffer(GL_RENDERBUFFER, _colorRenderBuffer);

[_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:_eaglLayer];

 }

Render buffer是OpenGL的一个对象,用于存放渲染过的图像。有时候你会发现render buffer会作为一个color buffer被引用,因为本质上它就是存放用于显示的颜色。

创建render buffer的三步:

1.调用glGenRenderbuffers来创建一个新的render buffer object。这里返回一个唯一的integer来标记render buffer(这里把这个唯一值赋值到——colorRenderBuffer)。有时候你会发现这个唯一值被用来作为程序内的一个OpenGL的名称。(反正它是唯一的)

2.调用glBindRenderbuffer,告诉这个OpenGL:我在后面引用GL_RENDERBUFFER的地方,其实是想用_colorRenderBuffer。其实就是告诉OpenGL,我们定义的buffer对象是属于哪一种OpenGL对象。

3.最后,为render buffer分配空间。renderbufferStorage


七:创建一个frame buffer(帧缓冲区)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值