2015-10-03 3 views
0

Я просто хочу нарисовать фон, наложить его прозрачным черным цветом 0.5f, чтобы затемнить его и сделать поверх этого меню паузы.Libgdx тусклый экран с glClearColor

Я пробовал:

Gdx.gl.glClearColor(0f, 0f, 0f, 0.5f); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

и ничего не работает. Я также не мог найти какое-либо решение в Интернете. Мой другой вариант - наложить черный спрайт, но я не хочу этого делать. Нужно ли рисовать его GL?

+0

Значит, вы хотите, чтобы фон (например, обои телефона), чтобы показать через за продуктами OpenGL? Или вы просто пытаетесь замаскировать свои другие объекты в игре, пока они приостановлены? Если это так, вы не должны очищать экран ... вы должны нарисовать прямоугольник над всем. Непонятно, что вы пытаетесь сделать. Ваш код выше очищает поверхность OpenGL и делает все черным. – Tenfour04

ответ

2

Ну, я бы нарисовать прозрачный прямоугольник

Gdx.gl.glEnable(GL20.GL_BLEND); 
    Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); 
    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); 
    shapeRenderer.setColor(new Color(0, 0, 0, 0.5f)); 
    shapeRenderer.rect(0, 0, screenWidth, screenHeight); 
    shapeRenderer.end(); 
    Gdx.gl.glDisable(GL20.GL_BLEND); 

Надеется, что это помогает

1

Вашего единственным решению наложить черный спрайт. Является наиболее эффективным и практичным.

Согласно документации:

Alpha function, blend function, logical operation, stenciling, 
texture mapping, and depth-buffering are ignored by glClear. 

glClear takes a single argument that is the bitwise OR of several 
values indicating which buffer is to be cleared. 

The values are as follows: 

GL_COLOR_BUFFER_BIT 
    Indicates the buffers currently enabled for color writing. 

Там не может быть больше цветов «под» после запуска glClear