Рисование градиента в 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();
}
И он рисует светло-голубой фон на экране. Я пытаюсь создать градиент, который идет от синего цвета вверху, до голубого донизу. Есть ли простой способ сделать это? Я новичок в Libgdx и OpenGL, поэтому я пытаюсь извлечь уроки из книги, но я не могу найти ответ на этот вопрос. Я слышал о том, как рисовать большой квадрат и иметь вершины разных цветов, но я не уверен, как это сделать.
Ответы
Ответ 1
В libGDX объект ShapeRenderer содержит метод drawRect()
, который принимает аргументы для его положения и размера, а также четырех цветов. Эти цвета преобразуются в градиент с 4 углами. Если вы хотите вертикальный градиент, просто сделайте верхние углы одним цветом, а нижние углы - другим. Что-то вроде этого:
shapeRenderer.filledRect(x, y, width, height, lightBlue, lightBlue, darkBlue, darkBlue);
Из API для ShapeRenderer:
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
);
Параметры для прямого метода работают так же, как и в методе fillRect, как в ответе Кевина Работника.