【发布时间】:2012-01-16 10:45:41
【问题描述】:
喂!
我一直在考虑更新一些旧的测试代码,试图重新了解添加到 GLKit 的新功能。到目前为止,我已经成功地设置了一个 GLKViewController 并开始渲染一些基本的形状,但一直在努力寻找任何关于 GLKBaseEffect 的体面信息。
GLKBaseEffect 文档指出:
在初始化时,您的应用程序首先创建一个 OpenGL ES 2.0 上下文并使其成为最新的。然后,它分配并初始化一个新的效果对象,配置它的属性,并调用它的 prepareToDraw 方法。绑定效果会导致着色器被编译并绑定到当前的 OpenGL ES 上下文。基本效果还需要应用程序提供顶点数据。要提供顶点数据,请创建一个或多个顶点数组对象。对于着色器所需的每个属性,顶点数组对象应启用该属性并指向存储在顶点缓冲区对象中的数据。
我正在努力辨别的是;
我需要为每个“模型”渲染一个 GLKBaseEffect 对象吗?或者我是否为每个“场景”使用一个 GLKBaseEffect 并在调用 prepareToDraw 之前简单地更改属性?
我看过一些关于游戏引擎和渲染器的教程,它们只是为每个模型使用单个 GLKBaseEffect,但如果可以使用单个实例来实现相同的效果,这似乎完全没有效率。
从阅读文档来看,这似乎是最好的方法,但考虑到我见过这么多人使用多个实例,我开始认为情况并非如此。
任何人都可以对此有所了解吗? GLKit 对 iOS(对我来说)还是相当新的,所以任何信息都将不胜感激。
【问题讨论】:
-
没有人广泛使用 GLKBaseEffect 来提供洞察力吗?如果使用单个实例或需要多个实例,我对性能提升感到好奇。我将编写一个测试应用程序并将我的结果发布给任何可能感兴趣的人。