文章目录
大家好,欢迎来到听风的OpenGL日常。
写在前面
上篇主要讲OpenGLES FrameBuffer的使用;理解本篇主要理解下面这幅图,所以文中会再出现一次:
快速添加到View
我们要自己渲染页面,建一个单视图的App,接下来创建一个TFGLView:UIView
,令该View
指针指向视图控制的view
;
@interface ViewController ()
@property (nonatomic, strong) TFGLView* mView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.mView = (TFGLView*)self.view;
}
@end
添加OpenGLES上下文
OpenGLES在iOS端有自己的实现,直接在Build Phases
里添加:
在TFGLView
里引用,这里我们使用ES2.0版本:
#import <OpenGLES/ES2/gl.h>
OpenGLES绘制在View的特殊图层CAEAGLLayer:CALayer
上,由于它是CALayer的子类,所以直接更改View
的layerClass
:
+(Class)layerClass
{
return [CAEAGLLayer class];
}
同修改VC的view类似,我们也要对layer作修改,设置全局layer属性:
@property(nonatomic,strong)CAEAGLLayer *myEagLayer;
另外我们需要获取上下文来保存OpenGL的状态:
@property(nonatomic,strong)EAGLContext *myContext;
接下来在layoutSubviews
方法中我们设置图层以及上下文;
- 图层
-(void)setupLayer
{
self.myEagLayer = (CAEAGLLayer *)self.layer;
/*
kEAGLDrawablePropertyRetainedBacking 表示绘图表面显示后,是否保留其内容
kEAGLDrawablePropertyColorFormat