OpenGL ES 入门API大全

本文章正确使用姿势:command/Ctrl + f  进行搜索对应的功能代码,找到它的详细解释。 (以下内容如有偏差,欢迎进行指正)

一.CAEAGLLayer 的使用:

OpenGL ES 入门API大全
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

OpenGL ES 入门API大全
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的这几属性设置完就够用了。


二.EAGLContext的使用