在Libgdx中绘制渐变

Jon*_*ale 17 java eclipse android opengl-es-2.0 libgdx

好的,我有这个代码

@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();
}
Run Code Online (Sandbox Code Playgroud)

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

Kev*_*man 26

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

shapeRenderer.filledRect(x, y, width, height, lightBlue, lightBlue, darkBlue, darkBlue);
Run Code Online (Sandbox Code Playgroud)

从ShapeRenderer的API:

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

  • 请注意,在libgdx的最新版本中,“ filledRect()”现在只是“ rect()”。 (2认同)

Fra*_*zoa 12

似乎在后期libGDX版本中删除了ShapeRenderer.filledRect方法.现在这样做的方法如下:

shapeRenderer.set(ShapeRenderer.ShapeType.Filled);
shapeRenderer.rect(
        x,
        y,
        width,
        height,
        Color.DARK_GRAY,
        Color.DARK_GRAY,
        Color.LIGHT_GRAY,
        Color.LIGHT_GRAY
);
Run Code Online (Sandbox Code Playgroud)

rect方法的参数工作方式与fillRect中的参数相同,就像Kevin Workman的回答一样.