Прозрачность LWJGL

Я пытаюсь использовать прозрачность LWJGL с помощью команды:

// Enable transparency
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

И прозрачность работает, просто фон нарисован так:

    // Draw Background
    glColor4f(1f, 1f, 1f, 1f);
    glPushMatrix();
    glBegin(GL_QUADS);
    glVertex2f(0, 0);
    glVertex2f(width, 0);
    glVertex2f(width, height);
    glVertex2f(0, height);
    glEnd();
    glPopMatrix();

Не показывает. Я использую LWJGL 2.8.2, Eclipse Indigo, и любая помощь будет оценена по достоинству!


person Mika    schedule 21.12.2011    source источник


Ответы (3)


При рендеринге прозрачных вещей вы должны рендерить все в обратном порядке. Поэтому убедитесь, что вы рендерите фон сначала.

person Nicol Bolas    schedule 21.12.2011
comment
Сначала я визуализирую фон, сразу после Display.sync(60); - person Mika; 21.12.2011

Я не уверен, что это лучшее решение, но способ получить прозрачный и непрозрачный контент — деактивировать/активировать GL_BLEND перед рисованием, например:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
drawTransparentContent();

glDisable(GL_BLEND);
drawNonTransparentContent();

Это сработало для меня.

person Adracus    schedule 04.01.2013

Когда вы визуализируете нетекстурированные вершины, рекомендуется использовать glDisable(GL_TEXTURE_2D) . Это должно исправить это, если вы отображаете вещи в правильном порядке.

person Prince Gupta    schedule 11.10.2019