繁体   English   中英

libgdx batch.draw与sprite.draw

[英]Libgdx batch.draw vs sprite.draw

我用TextureAtlas加载它,并调用TextureAtlas#createSprites(“ something”)。 我将得到一个AtlasSprites数组,我将其绘制为好像没有使用sprite.draw(Batch batch)剥离空白一样,而且我还必须将纹理的大小减小到世界的大小,所以我使用setSсale,但是纹理不会减小到世界的大小。因此,我决定尝试通过batch.draw(Sprite sprite,float x,float y,float width,float height)进行绘制,但它的绘制方式就像去除了空白。 如何在没有剥离空白的情况下绘制纹理并减少纹理?

仅供参考 )您之前使用的Spritedraw方法如下所示:

public void draw (Batch batch) {
    batch.draw(texture, getVertices(), 0, SPRITE_SIZE);
}

SPRITE_SIZE是顶点数, 0是“偏移量”,不幸的是,没有类似的版本使用缩放,至少我可以找到。


解决您的问题,假设你有一些精灵,你确实需要一些透明度的绝对最好的办法,就是重新固定您的纹理alpha值。 您可以在各种图像编辑器中执行此操作。 这样,您的纹理将在第一次正确加载。

另一种方法是在创建Textures时将Pixmap.Format设置为RGB888而不是RGBA8888 A代表alpha,因此您将纹理的格式更改为没有alpha值。 仅供参考, 8是用于每个颜色通道的位数-红色:8位,绿色:8位,蓝色:8位

但是,当使用TextureAtlas我对如何为您的案例设置纹理的输出格式并TextureAtlas 我知道它考虑了PagePixmap.Format ,但是我不确定如何将其应用于图集。

还有一个批处理设置

batch.disableBlending();

实际上,这将导致批处理在性能方面运行得更快。 这样很好。 但是,以此方式绘制的所有内容都会受到影响。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM