【发布时间】:2011-11-09 22:50:21
【问题描述】:
在 OpenGL(适用于 Android 的 ES)中,使用 GL10.glTranslatef(x, y, z); 然后绘制一个对象(在我的情况下为六边形图块)比将新坐标传递给对象并重构缓冲区(如果需要)更有效/实用是)?
【问题讨论】:
标签: android performance opengl-es
在 OpenGL(适用于 Android 的 ES)中,使用 GL10.glTranslatef(x, y, z); 然后绘制一个对象(在我的情况下为六边形图块)比将新坐标传递给对象并重构缓冲区(如果需要)更有效/实用是)?
【问题讨论】:
标签: android performance opengl-es
这取决于您的其余代码。例如,如果您谈论的是单个四边形的差异,则差异可能可以忽略不计。黄金法则是避免状态变化并围绕该目标优化几何。例如,如果您有 10000 个图块,可以在一次调用 glDrawElements 或 glDrawArrays 中绘制,如果您在代码中进行翻译并集体上传顶点位置,那么可以肯定的是,您会看到改进。如果您为每个图块调用一次 glDrawElements 或 glDrawArrays,那么您不太可能注意到任何差异。
所以:如果它允许您将更多几何图形一起批处理,这是一个值得的更改,否则它可能不会产生太大的可能性。根据我的轶事经验,在第一代 iOS 设备上,它有一个 PowerVR MBX,有一个精灵风格的引擎,我的设备从几百个精灵有点挣扎到它能够处理数千个精灵。批处理我的几何图形意味着 GPU/CPU 同步不再是瓶颈。
【讨论】: