我有一些没有透明像素的背景,还有一些带有透明像素的精灵。在libGDX文档之后,我正在执行以下操作:
spriteBatch.begin();
spriteBatch.disableBlending();
spriteBatch.draw(background, ...);
spriteBatch.enableBlending();
spriteBatch.draw(sprite, ...);
spriteBatch.end();
但是,我只是读了这篇博客文章,建议您每次都必须使用begin / end。
http://www.rengelbert.com/tutorial.php?id=179&show_all=true
spriteBatch.disableBlending();
spriteBatch.begin();
spriteBatch.draw(backgroundRegion, 0, 0, 320, 480);
spriteBatch.end();
spriteBatch.enableBlending();
spriteBatch.begin();
spriteBatch.draw(someTextureRegion1, 10, 30);
spriteBatch.draw(someTextureRegion2, 50, 20);
spriteBatch.draw(someTextureRegion3, 30, 90);
spriteBatch.end();
这真的需要吗?
我的代码似乎可以运行,没有错误报告,但是我不知道如何测试它是否比第二个示例更好或更糟。
最佳答案
启用/禁用混合将导致批处理刷新,这实际上与调用结束/开始相同。尽管您可能还是应该意识到这种情况,但您不必自己执行此操作。因此,您不必调用end / begin,而应将混合降至最低。