【问题标题】:Correct handling of drawing multiple objects?正确处理绘制多个对象?
【发布时间】:2012-12-05 16:08:55
【问题描述】:

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

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

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

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

是否有一种有效的方法可以让每个模型进入管道而不因统一更改而刷新?

【问题讨论】:

    标签: android opengl-es opengl-es-2.0


    【解决方案1】:

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

    【讨论】:

    • 每种架构都有一个,Adreno SDK、Tegra SDK等
    猜你喜欢
    • 1970-01-01
    • 2021-02-12
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多