Я пытаюсь увязать изображение с помощью JOGL. Я могу сделать изображение прекрасным, однако оно всегда отображается с полной интенсивностью. Ниже приведен код:OpenGL исчезает/не работает
private void render(GLAutoDrawable glad) {
GL2 gl = glad.getGL().getGL2();
// Prepares the rendering, things such as disabling depth, clearing the buffer bit etc
setUpGL(gl);
BufferedImage background = main.getCurrentState().getImage();
// Render the background, adapted from here: http://bit.ly/QjeusP
renderImage(gl, background, background.getWidth(), background.getHeight());
gl.glEnable(GL2.GL_BLEND);
gl.glBlendFunc(GL2.GL_SRC_ALPHA, GL2.GL_ONE_MINUS_SRC_ALPHA);
gl.glColor4f(0, 0, 0, alpha);
gl.glBegin(GL2.GL_QUADS);
gl.glVertex2f(0, background.getHeight());
gl.glVertex2f(background.getWidth(), background.getHeight());
gl.glVertex2f(background.getWidth(), 0);
gl.glVertex2f(0, 0);
gl.glEnd();
gl.glDisable(GL2.GL_BLEND);
}
переменная альфа представляет собой поплавок, который увеличивается на 0,1 для каждого рендеринга, если оно превышает 1,0, то уменьшается на 0,1, пока она не станет меньше, чем 0, то увеличивается, и так на.
EDIT 1: Вот код, который обновляет значение альфа:
private void update() {
if (isTransparent) {
alpha += 0.1f;
if (alpha >= 1.0f) {
alpha = 1.0f;
isTransparent = false;
}
}
else {
alpha -= 0.1f;
if (alpha <= 0.0f) {
alpha = 0.0f;
isTransparent = true;
}
}
}
Возможно, вам следует показать код 'renderImage' и код, обновляющий значение' alpha'? И что означает * «он не исчезает» *? Является ли изображение всегда визуализированным с полной интенсивностью? –
@ChristianRau извинения, см. Править – mikeythemissile
Где именно 'alpha' определен и используется? –