1

我有一些没有透明像素的背景,然后是一些带有透明像素的精灵。遵循 libGDX 文档,我正在做这样的事情:

spriteBatch.begin();  
spriteBatch.disableBlending();  
spriteBatch.draw(background, ...);  
spriteBatch.enableBlending();  
spriteBatch.draw(sprite, ...);  
spriteBatch.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();  

这真的需要吗?

我的代码似乎可以工作,没有报告错误,但我不知道如何测试它是否比第二个示例更好或更差。

4

1 回答 1

3

启用/禁用混合会导致批处理刷新,这实际上与调用 end/begin 相同。虽然您可能应该知道无论如何都会发生这种情况,但您不需要自己执行此操作。因此,您不必调用 end/begin,但应将混合更改降至最低。

于 2013-08-31T21:26:03.597 回答