OpenGL Multi Bit Alpha Textures - PullRequest
       46

OpenGL Multi Bit Alpha Textures

1 голос
/ 13 января 2011

У меня возникают некоторые проблемы при рендеринге текстуры, которая имеет 8-битный альфа-канал, а именно: ее выравнивание до 1 бита, а glBlendFunc (), похоже, ничего не делает.

Вот вызов немедленного режима:

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


glBegin(GL_QUADS);
{

    glTexCoord2f(0, 0);
    glVertex2f(0, 0);

    glTexCoord2f(1, 0);
    glVertex2f(356, 0);

    glTexCoord2f(1, 1);
    glVertex2f(356, 356);

    glTexCoord2f(0, 1);
    glVertex2f(0, 356);

}

glEnd();

Само собой разумеется, есть множество состояний OpenGL, которые были установлены за сценой, и однозначно одно из них

Существуют ли какие-либо состояния, о которых я не знаю, которые могут помешать стадии смешивания?

Я правильно понял, что такое blendfunc? Похоже, это правильно с интернет-страниц, на которых я смотрел - однако я проверил текстуру в GDEBugger, чтобы изображение было определенно загружено с 8-битным альфа-каналом, а также пробовал изображения без альфа-канала и с одним бит альфа-канал.

Любая помощь будет принята с благодарностью!


Edit:

В ответ на ответы: я использую библиотеку загрузки изображений SOIL, я собираюсь просмотреть ее источник и посмотреть, как она работает. Прямо сейчас я просто визуализирую это изображение поверх уже отрисованной сцены - она ​​определенно не сталкивается с проблемами глубины - фактически тест буфера глубины отключен.

Ответы [ 2 ]

1 голос
/ 13 января 2011

Прозрачность лучше всего реализовать, используя функцию смешивания (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) с примитивами, отсортированными от самого дальнего к ближайшему.

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

Я также хотел бы убедиться, что ваш вызов glTexImage2D использует GL_RGBA или GL_BGRA при загрузке текстуры.

EDIT:

Кроме того, glEnable (GL_ALPHA_TEST) и не забудьте установить альфа-функцию с помощью glAlphaFunc.

http://www.gamedev.net/topic/105082-glalphafunc/

0 голосов
/ 13 января 2011

Вы не опубликовали еще одну важную часть, именно так вы создали и настроили текстуру.И я думаю, что проблема кроется здесь, а не в коде, который вы выложили.

Чтобы смешивание работало в вышеприведенном случае, вы должны включить альфа-канал в текстуре.

...