Прозрачная текстура OpenGL (смешивание)

Мне нужно сделать одну из моих текстур прозрачной. Как мне это сделать?

Весь код, который обрабатывает мою текстуру:

    glBindTexture(GL_TEXTURE_2D, textureName);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureImg);

Что мне нужно изменить/добавить, чтобы сделать текстуру полностью прозрачной (полная альфа-версия)?


person hockeyman    schedule 02.07.2012    source источник
comment
Обратите внимание, что наличие прозрачной текстуры — это не то же самое, что рендеринг прозрачной геометрии. Смешивание — это одно, что вам нужно, z-сортировка — это, вероятно, другое.   -  person Kos    schedule 02.07.2012
comment
@Kos Я объясню, что я делаю. Я загружаю изображение и делаю из него текстуру. И мне нужно изменить альфа-канал текстуры на 0. В этом случае я мог бы изменить альфа-канал с 0,0 до 1,0 в будущем с помощью чего-то вроде инструмента «Кисть». Я использую мультитекстурирование, поэтому одна текстура накладывается на другую, поэтому, если альфа второй текстуры установлена ​​​​на 0, будет видна только первая текстура, а когда я изменю ее на 1 - будет видна вторая текстура. Я не думаю, что мне понадобится z-сортировка. Но спасибо за помощь.   -  person hockeyman    schedule 02.07.2012
comment
О, если вы не хотите рисовать прозрачную геометрию и планируете использовать альфа-канал только для смешивания разных текстур для получения конечного цвета на непрозрачном объекте, то вам действительно не нужны ни блендинг, ни z-сортировка. Просто попробуйте все текстуры в фрагментном шейдере и получите окончательный цвет, используя любое уравнение, которое вы хотите (например, T1.rgb*T1.a+T2.rgb*(1-T1.a).   -  person Kos    schedule 02.07.2012


Ответы (1)


Предоставленный код просто устанавливает текстуру. Вам также необходимо включить смешивание с помощью

    glEnable(GL_BLEND);

и настройте соответствующую функцию смешивания.

person Ani    schedule 02.07.2012
comment
Спасибо, я попробую предложенное вами решение и дам отзыв. - person hockeyman; 02.07.2012