LibGDX - 使用2x2纹理的渐变矩形(或类似方式?)

时间:2015-10-21 07:05:12

标签: opengl libgdx

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)
但这会产生:
enter image description here
那里发生了什么?

或者有更好的方法来有效地绘制渐变矩形吗?

编辑:

哎哟!谢谢TenFour04 - 我试过用 new TextureRegion(tx, 0.25f, 0.25f, 0.75f, 0.75f)但是得到了这个:
enter image description here

奇怪的是,我得到了我想要的东西
new TextureRegion(tx, 0.13f, 0.13f, 0.87f, 0.87f)
enter image description here

看起来像是一些舍入问题? 0.126f仍然会给我(看似),但0.125f会给我更接近帖子中的第一张图片。

@Pinkie Swirl:嗯,我想要一种绘制渐变矩形的方法,因为我不想制作纹理,但最后我做了..实际上我可以避免在运行中制作那些2x2纹理。

@minos

0 个答案:

没有答案