我有一个我想在libgdx 2D中渲染的游戏对象列表。
在我的设置中,我有两个不同的摄像头,一个完全匹配像素分辨率(用于绘制平铺的背景和字体),另一个匹配游戏板的典型视口(-0.1,-0.1,1.2,1.5)。
现在我希望列表中的每个游戏对象自己决定渲染时使用哪个摄像头,这意味着SpriteBatch的投影矩阵可能会在SpriteBatch.begin()... end()内多次改变
另一个解决方案是让两个SpriteBatches同时处于活动状态,并让游戏对象选择要渲染到哪个spritebatch,然后在渲染完成后调用它们上的End()。我在互联网上发现的其他一些问题和帖子表明,多个活跃的SpriteBatches并不是一个好主意。
这些解决方案的优缺点是什么?还有更好的吗?
答案 0 :(得分:2)
设计明智,太糟糕了!
我通常也有2台相机。一个用于具有低值(12x8或15x10)的游戏对象,一个用于具有高值的HUD(攻击按钮,统计数据等)(我的测试设备的像素完美)。我首先绘制游戏对象,完成批处理,然后绘制HUD。只需2次抽奖。但是:
SpriteBatch#setProjectionMatrix
“如果在Batch.begin()/ Batch.end()块中调用它,则将当前批处理刷新到gpu。”
如果在渲染代码中多次设置投影矩阵,则会触发大量批量刷新,并对您的性能产生负面影响。