在 Libgdx 中绘制渐变

2022-09-02 23:46:14

好的,我有这个代码

@Override
public void render() {
    // do not update game world when paused
    if (!paused) {
        // Update game world by the time that has passed
        // since last render frame
        worldController.update(Gdx.graphics.getDeltaTime());
    }
    // Sets the clear screen color to: Cornflower Blue
    Gdx.gl.glClearColor(0x64/255.0f, 0x95/255.0f, 0xed/255.0f,
            0xff/255.0f);
    // Clears the screen
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    // Render game world to screen
    worldRenderer.render();
}

它会在屏幕上绘制浅蓝色背景。我正在尝试创建一个渐变,从顶部的深蓝色到底部的浅蓝色。有没有一个简单的方法来做到这一点?我是Libgdx和OpenGL的新手,所以我试图从一本书中学习,但我似乎找不到这个问题的答案。我听说过画一个大正方形,让顶点有不同的颜色,但我不确定如何做到这一点。


答案 1

在 libGDX 中,ShapeRenderer 对象包含一个方法,该方法获取其位置和大小以及四种颜色的参数。这些颜色将转换为 4 角渐变。如果您想要垂直渐变,只需使顶角成为一种颜色,使底角成为另一种颜色即可。像这样:drawRect()

shapeRenderer.filledRect(x, y, width, height, lightBlue, lightBlue, darkBlue, darkBlue);

来自 ShapeRenderer 的 API:

4 种颜色参数指定矩形的左下角、右下角、右上角和左上角的颜色,允许您创建渐变。


答案 2

似乎ShapeRenderer.filledRect方法在后期的libGDX版本中已被删除。现在执行此操作的方法如下:

shapeRenderer.set(ShapeRenderer.ShapeType.Filled);
shapeRenderer.rect(
        x,
        y,
        width,
        height,
        Color.DARK_GRAY,
        Color.DARK_GRAY,
        Color.LIGHT_GRAY,
        Color.LIGHT_GRAY
);

rect方法的参数的工作方式与filledRect中的参数相同,就像Kevin Workman的答案一样。


推荐