gpt4 book ai didi

ios5 - 正确使用GLKBaseEffect

转载 作者:行者123 更新时间:2023-12-04 03:12:45 25 4
gpt4 key购买 nike

喂!

我一直在考虑更新一些旧的测试代码,试图重新了解添加到 GLKit 的新功能。到目前为止,我已经成功地设置了一个 GLKViewController 并开始渲染一些基本的形状,但一直在努力寻找任何关于 GLKBaseEffect 的体面信息。

GLKBaseEffect 文档指出:

At initialization time, your application first creates an OpenGL ES 2.0 context and makes it current. Then, it allocates and initializes a new effect object, configures its properties, and calls its prepareToDraw method. Binding an effect causes a shader to be compiled and bound to the current OpenGL ES context. The base effect also requires vertex data to be supplied by your application. To supply vertex data, create one or more vertex array objects. For each attribute required by the shader, the vertex array object should enable the attribute and point to data stored in a vertex buffer object.

我正在努力辨别的是;

我需要为每个“模型”渲染一个 GLKBaseEffect 对象吗?或者我是否为每个“场景”使用一个 GLKBaseEffect 并在调用 prepareToDraw 之前简单地更改属性?

我看过一些关于游戏引擎和渲染器的教程,它们只是为每个模型使用单个 GLKBaseEffect,但如果可以使用单个实例来实现相同的效果,这似乎完全没有效率。

从阅读文档来看,这似乎是最好的方法,但考虑到我见过这么多人使用多个实例,我开始认为情况并非如此。

任何人都可以对此有所了解吗? GLKit 对 iOS(对我来说)还是相当新的,所以任何信息都将不胜感激。

最佳答案

不,您不应该为每个对象创建唯一的 GLKBaseEffect。例如,如果您正在绘制一个迷宫,那么该迷宫中的每 block 砖都可能是它自己的对象,但它们都可以共享相同的 GLKBaseEffect。不过请记住,GLKBaseEffect 还会在位置以及纹理、光照、雾等中存储信息。因此,如果您想在多个地方绘制砖 block (我假设您这样做 :-),您可以调整它们的转换矩阵,然后调用'prepareToDraw' API。

我同意我们需要更多由广泛使用 GLKBaseEffect 的人编写的教程,以获取有关此新框架最佳实践的更多信息。

祝你航行愉快。

关于ios5 - 正确使用GLKBaseEffect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8878866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com