啊嗨!
我一直在研究更新一些旧的测试代码,试图熟悉GLKit添加的新功能。到目前为止,我已成功地设置了一个GLKViewController并开始渲染一些基本形状,但我还是找不到关于GLKBaseEffect的任何好的信息。
GLKBaseEffect文档如下:
“在初始化时,您的应用程序首先创建一个OpenGL ES 2.0上下文并将其设为当前。然后,它分配并初始化一个新的effect对象,配置其属性,并调用其prepareToDraw方法。绑定效果会导致着色器被编译并绑定到当前的OpenGL ES上下文中。基本效果还需要您的应用程序提供顶点数据。要提供顶点数据,请创建一个或多个顶点数组对象。对于着色器所需的每个属性,顶点数组对象都应该启用该属性并指向存储在顶点缓冲区对象中的数据。”
我现在很困惑的是:
对于我正在渲染的每个“模型”,我是否需要一个GLKBaseEffect对象?或者我只需要为每个“场景”使用单个GLKBaseEffect,在调用prepareToDraw之前随时更改属性即可?
我看过一些游戏引擎和渲染器的教程,它们只是为每个模型使用单个GLKBaseEffect,但如果可以使用单个实例实现相同的功能,那么这似乎非常低效。
从文档中阅读起来,似乎这是最好的方法,但考虑到我已经看到很多人使用多个实例,我开始认为这并不是这种情况。
有人可以解释一下吗?GLKit对iOS(以及对我)来说仍然是相当新的技术,所以任何信息都将不胜感激。
我一直在研究更新一些旧的测试代码,试图熟悉GLKit添加的新功能。到目前为止,我已成功地设置了一个GLKViewController并开始渲染一些基本形状,但我还是找不到关于GLKBaseEffect的任何好的信息。
GLKBaseEffect文档如下:
“在初始化时,您的应用程序首先创建一个OpenGL ES 2.0上下文并将其设为当前。然后,它分配并初始化一个新的effect对象,配置其属性,并调用其prepareToDraw方法。绑定效果会导致着色器被编译并绑定到当前的OpenGL ES上下文中。基本效果还需要您的应用程序提供顶点数据。要提供顶点数据,请创建一个或多个顶点数组对象。对于着色器所需的每个属性,顶点数组对象都应该启用该属性并指向存储在顶点缓冲区对象中的数据。”
我现在很困惑的是:
对于我正在渲染的每个“模型”,我是否需要一个GLKBaseEffect对象?或者我只需要为每个“场景”使用单个GLKBaseEffect,在调用prepareToDraw之前随时更改属性即可?
我看过一些游戏引擎和渲染器的教程,它们只是为每个模型使用单个GLKBaseEffect,但如果可以使用单个实例实现相同的功能,那么这似乎非常低效。
从文档中阅读起来,似乎这是最好的方法,但考虑到我已经看到很多人使用多个实例,我开始认为这并不是这种情况。
有人可以解释一下吗?GLKit对iOS(以及对我)来说仍然是相当新的技术,所以任何信息都将不胜感激。