0

虽然我在技术上使用 OpenGL 2.0 ES 在 android 平台上工作,但我相信这可以应用于更多的 OpenGL 技术。

我有一个我试图在网格上绘制的对象(敌人、角色等)列表,每个空间都是 1x1,并且每个对象都匹配。目前,每个对象都是自我平移的……也就是说,它获取其模型坐标并通过一个简单的循环将它们调整为位于其适当网格位置的世界坐标中。(即,如果它应该在 (3,2) 处,它将相应地转换它的坐标。

我遇到的问题是我不确定如何有效地绘制它们。我有一个循环遍历所有对象并为每个对象调用 draw,类似于 android 教程,但这似乎非常低效。

每个对象都有自己的方形图像纹理,与它们填充的 1x1 网格相匹配。他们可能永远不需要自己独特的着色器,因此对象之间唯一变化的似乎是顶点和着色器。

有没有一种有效的方法可以让每个模型进入管道而不会因为统一的变化而刷新?

4

1 回答 1

2

这可能需要一些尝试和错误过程,并且可能取决于硬件。我会使用带有 GL_STATIC_DRAW 的网格的缓冲区对象,将一些纹理打包成一个更大的纹理,并根据该更大的纹理批量绘制所有对象,以尽可能避免状态变化。分析并让我们了解您的瓶颈在哪里的更多信息。

于 2012-12-04T05:36:28.617 回答