libgdx中关于Sprite透明度无效的一深坑

在libgdx初学者群里经常会见到有人问,为什么我设置了Sprite透明度没有效果?曾经我也落入此坑中久久未能爬出来.在此备忘一下.

下面是一段绘制已设置好Sprite透明度的代码.

batch.begin();
batch.setColor(sprite.getColor().r,sprite.getColor().g,sprite.getColor().b,sprite.getColor().a);
batch.draw(nextSprite.getTexture(), 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false, true);
batch.end();
我们可以看到第2行代码为SpriteBatch设置了sprite的颜色和透明度.第三句就是绘制该sprite的纹理.

好多朋友这么设置后发现设置好的透明度无效,或者是不按照自己事先设置好的方式去显示.

我看过好几位问我这样问题的朋友的代码,发现他们无一例外的都是忘记在绘制之前做清屏设置了.

假设我们的sprite的透明度设置为0.5f,正常情况下sprite绘制出来是一个半透明效果,如果我们没有在batch.begin()之前做清屏处理,那第一次绘制上去了一个透明度0.5f的纹理,然后在第二帧的时候又绘制上去一个透明度0.5f的纹理,两个一叠加显示的肯定就不是透明度为0.5f的纹理了.

所以大家要切记在做透明度操作时一定要在begin之前加上Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

清屏处理,把上一帧已经绘制的半透明纹理清理掉,才会显示出你要的效果.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值