【发布时间】:2014-09-01 03:50:42
【问题描述】:
我正在尝试弄清楚如何使矩形纹理显示在另一张图像的后面或前面。在这种特殊情况下,它是矩形后面的数组矩形。
还试图弄清楚如何在所有其他纹理前面保留“你的分数是多少”字符串。
有没有办法在 libgdx 中指定纹理层顺序?我尝试更改它们的创建和渲染顺序,但无济于事。也找不到任何信息,所以也许它只是被称为别的东西。
【问题讨论】:
我正在尝试弄清楚如何使矩形纹理显示在另一张图像的后面或前面。在这种特殊情况下,它是矩形后面的数组矩形。
还试图弄清楚如何在所有其他纹理前面保留“你的分数是多少”字符串。
有没有办法在 libgdx 中指定纹理层顺序?我尝试更改它们的创建和渲染顺序,但无济于事。也找不到任何信息,所以也许它只是被称为别的东西。
【问题讨论】:
你只需要先绘制背景纹理,然后是前景,然后是分数:
(半伪代码,因为我有一段时间没有做过libgdx)
public void update(float _delta)
{
spritebatch.begin();
drawbackgrounds();
drawforegrounds();
drawoverlay();
spritebatch.end();
}
private void drawbackgrounds()
{
//draw your background textures here
}
private void drawforegrounds()
{
//draw your foreground textures here
}
private void drawbackgrounds()
{
//draw your overlay here
}
【讨论】:
您使用的是 Scene2D 吗?如果是这样,您可以使用actor#toFront 或actor#toBack
如果您使用 Batch 和 ShapeRenderer 进行渲染,那么您渲染它们的顺序就是它们在屏幕上的绘制优先级。
所以如果你先渲染一个矩形,然后再渲染分数标签;将显示标签。
但是,如果您先渲染标签,然后再渲染矩形;矩形将优先绘制在标签之上。
如果您使用 OpenGL 函数来创建这些显示,那么我假设渲染顺序规则仍然适用。
【讨论】:
batch.begin();
......something draw here as background
batch.end();
//stage start
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
batch_front.begin();
......something draw here as foreground
batch_front.end();
【讨论】: