一、整体思路
① GLSL 和 iOS
- 本篇主要使用编译链接自定义的 shader(顶点着色器/片元着色器),用简单的 GLSL 语言来实现顶点、片元着色器,并对图形进行简单的变换。
- OpenGL ES 只是用来做渲染,所以 iOS 要提供一个载体,就是 CAEAGLLayer,创建的方法是,通过重写 UIView 的类属性(OC 中是类方法)返回 CAEAGLLayer.self,它是一个对 core animation 的封装,它能满足所有的 OpenGL ES 的方法访问。
- CAEAGLLayer:在制定该图层关联的视图作为渲染器的目标图形上下文之前,可以使用 drawableProperties 属性更改呈现属性。此属性允许您配置呈现表面的颜色格式以及表面是否保留其内容。 因为 OpenGL ES 渲染的效果是要提交到用户使用的核心动画上,所以使用在该 layer 上的任何效果和动画都会影响渲染的 3D 效果,为了时性能最佳你应该做一下操作:设置图层为不透明,设置图层边界以匹配显示的尺寸,确保图层没有做变换。
- 尽量避免在 CAEAGLLayer 添加其 layer,如果必须要添加其他非 OpenGL 内容,那么如果将透明的 2D 内容置于 GL 内容之上,并确保 OpenGL 内容是不透明的且没有转换过,那么性能还是可以接受的。当在竖屏上绘制横向内容时,应该自己旋转内容,而不是使用 CAEAGLLayer 转换来旋转它。
② GLSL 实现图片渲染的思路
- 创建图层:重写 layerClass,将 YDWVie