在OpenGL(ES for Android,如果重要)中,使用GL10.glTranslatef(x, y, z);
然后绘制一个对象(在我的情况下是六边形图块)比将新坐标传递给对象并重构缓冲区更有效/实用(如果需要)?
答案 0 :(得分:4)
这取决于你的其余代码。例如,如果您正在讨论单个四元组的差异,那么这可能是一个微不足道的差异。黄金法则是避免状态变化并围绕该目标优化几何。如果你有一个10000个图块,你可以通过一次调用glDrawElements
或glDrawArrays
来绘制,如果你翻译你的代码并整体上传顶点位置那么它就像你可以确定一样会看到改善。如果您正在按照每个图块拨打glDrawElements
或glDrawArrays
,则无论如何都不会发现任何差异。
所以:如果它允许你将更多的几何体组合在一起,这是一个值得改变,否则它可能不会有太多的可能性。从我的轶事经验来看,在第一代iOS设备上,它有一个带有精灵风格引擎的PowerVR MBX,我从设备上挣扎了几百个精灵,它能够处理数千个。批处理我的几何意味着GPU / CPU同步不再是瓶颈。