正在改变SpriteBatch投影矩阵开始...结束一个好主意?

时间:2013-12-10 22:19:01

标签: java android libgdx

我有一个我想在libgdx 2D中渲染的游戏对象列表。

在我的设置中,我有两个不同的摄像头,一个完全匹配像素分辨率(用于绘制平铺的背景和字体),另一个匹配游戏板的典型视口(-0.1,-0.1,1.2,1.5)。

现在我希望列表中的每个游戏对象自己决定渲染时使用哪个摄像头,这意味着SpriteBatch的投影矩阵可能会在SpriteBatch.begin()... end()内多次改变

另一个解决方案是让两个SpriteBatches同时处于活动状态,并让游戏对象选择要渲染到哪个spritebatch,然后在渲染完成后调用它们上的End()。我在互联网上发现的其他一些问题和帖子表明,多个活跃的SpriteBatches并不是一个好主意。

这些解决方案的优缺点是什么?还有更好的吗?

1 个答案:

答案 0 :(得分:2)

设计明智,太糟糕了!

我通常也有2台相机。一个用于具有低值(12x8或15x10)的游戏对象,一个用于具有高值的HUD(攻击按钮,统计数据等)(我的测试设备的像素完美)。我首先绘制游戏对象,完成批处理,然后绘制HUD。只需2次抽奖。但是:

SpriteBatch#setProjectionMatrix
“如果在Batch.begin()/ Batch.end()块中调用它,则将当前批处理刷新到gpu。”

如果在渲染代码中多次设置投影矩阵,则会触发大量批量刷新,并对您的性能产​​生负面影响。