注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mississippi的博客

学习使人进步

 
 
 

日志

 
 

从零开始构建IOS的OpenGL应用(五)  

2012-08-16 13:28:40|  分类: Objective-C |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

五、执行渲染循环

万事具备,现在可以让OpenGL显示一些东西了。

GLKit框架中,尽管OpenGL的行为,是由“GLKViewController”和“GLKView”联合控制的,但实际上“GLKView”类中完全不需要写任何自己的代码,因为,“GLKView”类中每帧触发的两个方法“update”和“glkView”,都转交给“GLKViewController”代理执行了。


1、添加代理方法

在“ViewController.m”中添加两个方法:

从零开始构建IOS的OpenGL应用(五) - mississi - mississi的博客
 

这两个方法每帧都执行一次(循环执行),一般执行频率与屏幕刷新率相同(但也可以更改)。

第一次循环时,先调用“glkView”再调用“update”。

一般,将场景数据变化放在“update”中,而渲染代码则放在“glkView”中。

2、渲染场景


从零开始构建IOS的OpenGL应用(五) - mississi - mississi的博客
 

前两行为渲染前的“清除”操作,清除颜色缓冲区和深度缓冲区中的内容,并且填充淡蓝色背景(默认背景是黑色)。

prepareToDraw”方法,是让“效果Effect”针对当前“Context”的状态进行一些配置,它始终把“GL_TEXTURE_PROGRAM”状态定位到“Effect”对象的着色器上。此外,如果Effect使用了纹理,它也会修改“GL_TEXTURE_BINDING_2D”。

 

接下来,用“glDrawArrays”指令,让OpenGL“画出”两个三角形(拼合为一个正方形)。OpenGL会自动从通用顶点属性中取出这些数据、组装、再用“Effect”内置的着色器渲染。

 

3、结果

从零开始构建IOS的OpenGL应用(五) - mississi - mississi的博客
 

渲染内容终于呈现了,蓝色背景、还有一个绿色矩形(其实是两个三角形)。绿色并非是此物体的本色,而受是绿色灯光影响。

PS:在前面的顶点数据定义中,期望得到一个正方形,但为什么显示结果却是一个矩形?


  评论这张
 
阅读(14213)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017