CMIIW:我听说libgdx的ShapeRenderer很慢,最好使用Batch。
我尝试使用Pixmap生成2x2纹理并依赖于线性混合:
public void rect(Batch batch, float x, float y, float w, float h, float rot, Color c00, Color c01, Color c10, Color c11){
Pixmap pm = new Pixmap(2, 2, Format.RGBA4444);
pm.drawPixel(0, 0, Color.rgba8888(c00));
pm.drawPixel(0, 1, Color.rgba8888(c01));
pm.drawPixel(1, 0, Color.rgba8888(c10));
pm.drawPixel(1, 1, Color.rgba8888(c11));
Texture tx = new Texture(pm);
tx.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
batch.end();
batch.begin();
batch.draw(new TextureRegion(tx), x, y, w/2f, h/2f, w, h, 1f, 1f, rot, true);
batch.end();
batch.begin();
tx.dispose();
pm.dispose();
}
这不是我想要的效果。 如果我可以从纹理的每一侧抛出一半像素,那么我认为它会很好。
我认为为了做到这一点,我必须将TextureRegion更改为:
new TextureRegion(tx, 0.5f, 0.5f, 1f, 1f)
但这会产生:
那里发生了什么?
或者有更好的方法来有效地绘制渐变矩形吗?
编辑:
哎哟!谢谢TenFour04 - 我试过用
new TextureRegion(tx, 0.25f, 0.25f, 0.75f, 0.75f)
但是得到了这个:
new TextureRegion(tx, 0.13f, 0.13f, 0.87f, 0.87f)
:看起来像是一些舍入问题? 0.126f仍然会给我(看似),但0.125f会给我更接近帖子中的第一张图片。
@Pinkie Swirl:嗯,我想要一种绘制渐变矩形的方法,因为我不想制作纹理,但最后我做了..实际上我可以避免在运行中制作那些2x2纹理。
@minos