嗨!
我一直在研究更新一些旧的测试代码,试图了解添加到GLKit的新功能.到目前为止,我已经设法建立一个GLKViewController并开始渲染一些基本的形状,但很难找到关于GLKBaseEffect的任何体面的信息.
GLKBaseEffect文档说明:
在初始化时,您的应用程序首先创建一个OpenGL ES 2.0上下文并使其成为当前.然后,它分配并初始化一个新的效果对象,配置其属性,并调用其prepareToDraw方法.绑定效果会导致着色器被编译并绑定到当前的OpenGL ES上下文.基本效果还需要应用程序提供顶点数据.要提供顶点数据,请创建一个或多个顶点数组对象.对于着色器所需的每个属性,顶点数组对象应启用该属性并指向存储在顶点缓冲区对象中的数据.
我正在努力辨别的是;
我是否需要为每个"模型"呈现GLKBaseEffect对象?或者我是否为每个"场景"使用单个GLKBaseEffect,只需在调用prepareToDraw之前动态更改属性?
我已经看过一些游戏引擎和渲染器的教程,它们只为每个模型使用一个GLKBaseEffect,但如果使用单个实例可以实现同样的效果,这似乎完全没有效率.
从阅读文档看,这似乎是最好的方法,但考虑到我看到很多人使用多个实例,我开始认为情况并非如此.
任何人都可以对此有所了解吗?对于iOS(以及我)来说,GLKit仍然相当新,所以任何信息都会非常感激.
不,您不应为每个对象创建唯一的GLKBaseEffect.例如,如果您正在绘制迷宫,则该迷宫中的每个砖块可能是其自己的对象,但它们都可以共享相同的GLKBaseEffect.但请记住,GLKBaseEffect还会将信息存储在位置以及纹理,灯光,雾等中.因此,如果您想在多个地方绘制砖块(我假设您这样做:-),您可以调整它们的转换矩阵然后调用'prepareToDraw'API.
我同意我们需要更多教程,这些教程是由广泛使用GLKBaseEffect的人员编写的,以获得有关此新框架的最佳实践的更多信息.
快乐航行..
| 归档时间: |
|
| 查看次数: |
3312 次 |
| 最近记录: |