gpt4 book ai didi

java - LibGDX:循环时使用 SpriteBatches

转载 作者:行者123 更新时间:2023-11-29 06:35:32 25 4
gpt4 key购买 nike

我有一个 2d Sprite 数组,其中包含大约。 50 个 Sprite 。我想在渲染方法中绘制它们。我不知道什么会给我最好的表现。这是我想出的两种选择:

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

或者:

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

我想第一种选择更好,因为我不会一遍又一遍地开始批处理。另一方面,我不确定在 batch.begin() - batch.end() 部分内循环是否是好的做法。

或者是否有另一种性能更好的替代方案?

感谢您的回答,

托尼

最佳答案

您绝对应该更喜欢第一个变体。 SpriteBatch 将在必要时在内部将调用打包发送到 OpenGL。如果您调用 batch.end(),您将强制 SpriteBatch 在每个循环期间发送挂起的 OpenGL 命令。

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

关于java - LibGDX:循环时使用 SpriteBatches,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21657730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com