了解Apple GLKit

2020-07-26  本文已影响0人  _涼城

GLKit 框架的设计⽬标是为了简化基于OpenGL / OpenGL ES 的应⽤开发 。它的出现加快OpenGL ES或OpenGL应⽤程序开发。 使⽤数学库,背景纹理加载,预先创建的着⾊器效果,以及标准视图和视图控制器来实现渲染循环。

使用GLKit视图呈现OpenGL ES内容

GLKView_diagram_2x.png

配置GLKit视图代码示例

-(void)viewDidLoad{
 [super viewDidLoad];
 //创建OpenGL ES上下⽂并将其分配给从故事板加载的视图
 GLKView * view =(GLKView *)self.view;
 view.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
 //配置视图创建的渲染缓冲区
 view.drawableColorFormat = GLKViewDrawableColorFormatRGBA8888;
 view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
 view.drawableStencilFormat = GLKViewDrawableStencilFormat8;
 //启⽤多重采样
 view.drawableMultisample = GLKViewDrawableMultisample4X;
} 
-(void)drawRect:(CGRect)rect
{
 //清除帧缓冲区
 glClearColor(0.0f,0.0f,0.1f,1.0f);
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//使⽤先前配置的纹理,着⾊器和顶点数组绘制
 glBindTexture(GL_TEXTURE_2D,_planetTexture);
 glUseProgram(_diffuseShading);
 glUniformMatrix4fv(_uniformModelViewProjectionMatrix,1,0,
_modelViewProjectionMatrix.m);
 glBindVertexArrayOES(_planetMesh);
 glDrawElements(GL_TRIANGLE_STRIP,256,GL_UNSIGNED_SHORT); 
} 

GLKit功能

GLKit框架提供了功能和类,可以减少创建新的基于着⾊器的应⽤程序所需的⼯作量,或者⽀持依赖早期版本的OpenGL ES或OpenGL提供的固定函数顶点或⽚段处理的现有应⽤程序。

加载纹理

通过GLKTextureInfo创建OpenGL 纹理信息.

初始化

从⽂件中加载处理

从URL加载纹理

从内存中表示创建纹理

从CGImages创建纹理

从URL加载多维创建纹理

从⽂件加载多维数据创建纹理

提供高性能的数学运算

提供常用的向量,四元数和矩阵运算。

获取世界坐标系

目的:根据你的设置返回一个4x4矩阵变换的世界坐标系坐标。

参数1:眼睛位置的x坐标

参数2:眼睛位置的y坐标

参数3:眼睛位置的z坐标

第一组:就是物体的位置

参数4:正在观察的点的X坐标

参数5:正在观察的点的Y坐标

参数6:正在观察的点的Z坐标

第二组:就是眼睛所看物体的位置

参数7:摄像机上向量的x坐标

参数8:摄像机上向量的y坐标

参数9:摄像机上向量的z坐标

第三组:就是头顶朝向的方向(因为你可以头歪着的状态看物体)

GLKMatrix4 GLKMatrix4MakeLookAt(float eyeX, float eyeY, float eyeZ,
     float centerX, float centerY, float centerZ,
     float upX, float upY, float upZ)

提供常见的着色器

提供视图视图以及视图控制器

帧缓存区属性

绘制视图的内容

删除视图FrameBuffer对象

-deleteDrawable 删除与视图关联的可绘制对象

控制帧更新

获取有关View 更新信息

上一篇 下一篇

猜你喜欢

热点阅读