本文章正确使用姿势:command/Ctrl + f 进行搜索对应的功能代码,找到它的详细解释。 (以下内容如有偏差,欢迎进行指正)
一.CAEAGLLayer 的使用:
官方解释如图CAEAGLLayer,我来简单翻译一下:
CAEAGLLayer 是继承于CALayer 的,可以用它在iOS 和tvOS 的设备上使用。如果你打算用OpenGL 进行绘画的话,那么可以使用这个类作为背景的layer,可以通过重写layerClass 方法进行初始化。代码如下:
self.myEagLayer = (CAEAGLLayer *)self.layer;
+ (Class)layerClass {
return [CAEAGLLayer class];
}
//zs20180312 其实这句话 是通过重写layerClass 方法,重新定义self.layer 的类型 self.myEagLayer只是指向self.layer 的指针。
为了更好的展现最好进行如下的设置:
1.将其不透明度(opaque)设置成true。
2. CAEAGLLayer 的bounds 设置成当前整个展示图层的大小。
3.CAEAGLLayer 不能旋转,不能偏移。
4.可以在CAEAGLLayer上设置非openGL 的视图,需要注意的是绘制透明的2D 的内容的时候,必须保证OpenGL的内容是不透明的。
5.尽量变换CAEAGLLayer上的内容,而不是变换CAEAGLLayer。
1.1 opaque
opaque:不透明的
self.myEagLayer.opaque = YES;
//CAEAGLLayer默认是透明的,必须将它设置为不透明才能其可见
1.2 drawableProperties
皇家翻译:通过这个字典的值来设置绘制的特点。需要注意的一点是这个属性必须在EAGLContext的方法renderbufferStorage:fromDrawable:前设置才能生效。如果要更改这个属性值,还需要再次调用下renderbufferStorage:fromDrawable:的方法才能生效。
//设置描绘属性,在这里设置不维持渲染内容以及颜色格式为 RGBA8。
self.myEagLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumbernumberWithBool:NO], kEAGLDrawablePropertyRetainedBacking,
kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
详细解释:
/* kEAGLDrawablePropertyRetainedBacking 表示绘图表面显示后,是否保留其内容,一般设置为false; 不保留绘完就释放了。
它是一个key值,通过一个NSNumber包装bool值.
kEAGLDrawablePropertyColorFormat:绘制对象内部的颜色缓存区格式
kEAGLColorFormatRGBA8:32位RGBA的颜色, 4*8=32;
kEAGLColorFormatRGB565:16位RGB的颜色
kEAGLColorFormatSRGBA8:SRGB, */
简单的绘制,CAEAGLLayer的这几属性设置完就够用了。