OpenGL的基本概念

OpenGL的版本

OS系统默认支持OpenGl ES1.0、ES2.0以及ES3.0 3个版本,三者之间并不是简单的版本升级,设计理念甚至完全不同,在开发OpenGL项目前,需要根据业务需求选择合适的版本。通过EAGLContext指定ES版本号

EAGLContext *mContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; //2.0,还有1.0和3.0 

OpenGL坐标系

OpenGL坐标系不同于UIKit坐标系,其实它是这样的


GLKViewController & GLKView

系统对OpenGL进行了简单的封装,继承GLKViewController定义了自己的ViewController,CLKViewController的View为CLKView类

GLKViewController渲染并非NSRunLoopCommonModes,而是NSDefaultLoopMode,因此在UIKit使用CLKViewController,当滑动界面的时候,OpenGL是不会渲染的

EAGLContext

EAGLContext与UIKit中的CGContextRef相识,EAGLContext相当于OpenGL绘制句柄或者上下文,在绘制图之前需要指定使用创建的上下文绘制。

[EAGLContext setCurrentContext:self.mContext];

渲染场景的代码

- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect {

glClearColor(0.3f, 0.6f, 1.0f, 1.0f);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

//启动着色器

[self.mEffect prepareToDraw];

glDrawElements(GL_TRIANGLES, self.mCount, GL_UNSIGNED_INT, 0);

}

glClear-清除viewport的缓存区

GL_API void          GL_APIENTRY glClear (GLbitfield mask);

GL_API void          GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);// 清除颜色的设置

GL_API void          GL_APIENTRY glClearDepthf (GLclampf depth);

GL_API void          GL_APIENTRY glClearStencil (GLint s);

GL_COLOR_BUFFER_BIT: 当前可写的颜色缓冲

GL_DEPTH_BUFFER_BIT: 深度缓冲

GL_ACCUM_BUFFER_BIT: 累积缓冲

GL_STENCIL_BUFFER_BIT: 模板缓冲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值