Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LibGDX:循环时使用spritebatch_Java_Android_Performance_Libgdx_Sprite - Fatal编程技术网

Java LibGDX:循环时使用spritebatch

Java LibGDX:循环时使用spritebatch,java,android,performance,libgdx,sprite,Java,Android,Performance,Libgdx,Sprite,我有一个包含大约50个精灵的2d精灵阵列。我想在render方法中绘制它们。我不知道什么能给我最好的表现。以下是我提出的两个备选方案: batch.begin(); for(Sprite[] row : sprite2d) { for(Sprite cell : row) { cell.draw(batch); } } batch.end(); 或: 我认为第一种选择更好,因为我不会一次又一次地开始批量生产。另一方面,我不确定在batch.begin()-bat

我有一个包含大约50个精灵的2d精灵阵列。我想在render方法中绘制它们。我不知道什么能给我最好的表现。以下是我提出的两个备选方案:

batch.begin();
for(Sprite[] row : sprite2d) {
    for(Sprite cell : row) {
        cell.draw(batch);
    }
}
batch.end();
或:

我认为第一种选择更好,因为我不会一次又一次地开始批量生产。另一方面,我不确定在batch.begin()-batch.end()部分中循环是否是好的实践

或者是否有另一种可以提供更好性能的替代方案

谢谢你的回答


托尼

你肯定更喜欢第一种变体
SpriteBatch
将在必要时以捆绑方式在内部向OpenGL发送调用。如果调用
batch.end()
,将强制
SpriteBatch
在每个循环期间发送挂起的OpenGL命令


昂贵的代码包含在私有方法
SpriteBatch#renderMesh()
中,每次需要刷新OpenGL命令时,SpriteBatch都会自动调用该方法。如果出于任何原因需要刷新命令,也可以通过调用
SpriteBatch#flush()
显式地执行此操作,这样成本仍然会更低,然后通过调用
SpriteBatch#end()
结束SpriteBatch,您肯定更喜欢第一个变体
SpriteBatch
将在必要时以捆绑方式在内部向OpenGL发送调用。如果调用
batch.end()
,将强制
SpriteBatch
在每个循环期间发送挂起的OpenGL命令

昂贵的代码包含在私有方法
SpriteBatch#renderMesh()
中,每次需要刷新OpenGL命令时,SpriteBatch都会自动调用该方法。如果出于任何原因需要刷新命令,也可以通过调用
SpriteBatch#flush()
显式执行,这比调用
SpriteBatch#end()
来结束SpriteBatch更便宜

for(Sprite[] row : sprite2d) {
    for(Sprite cell : row) {
        batch.begin();
        cell.draw(batch);
        batch.end();
    }
}