Как сделать прозрачными текстуры


Добавлено: 15.09.2018, 18:06 / Просмотров: 42592
Закрыть ... [X]

День добрый.
Собственно вопрос. Как наложить текстуру, что бы какая-то её часть была полностью прозрачной(скажем синего цвета) а остальная часть полностью непрозрачной.
Я использовал glBlendFunc, синий цвет полностью исчезает, но и текстура становиться наполовину прозрачной :(.

Подскажите, что можно сделать.

ЗЫ если возможно, то без использования маски

для таких вещей придуман альфаканал в текстуре

YgriK
чуть подробней можно?

ЗЫ если ты про то, чтобы сделать прозрачной всю текстуру... мне не это нужно

Kerghan
-подсказка 1)  в фотошоте в альфаканале текстуры делать градиент
- подсказка 2)  в фотошоте в альфаканале текстуры делать дырку
- пишешь тест с использованием блендинга
- тест 2 с использованием альфа-теста
- не забываем читать доки

Сделал как ты говорил, нихрена не получается

glEnable(GL_BLEND);
glEnable(GL_ALPHA_TEST);
glBlendFunc(GL_SRC_ALPHA,GL_ONE);
//glAlphaFunc(GL_GREATER, 0.5);

gluBuild2DMipmaps(GL_TEXTURE_2D, 3, image->sizeX, image->sizeY, GL_RGB, GL_UNSIGNED_BYTE, image->data);

Какие параметры в glBlendFunc вписать нужно и нужно ли glAlphaFunc использовать???

gluBuild2DMipmaps(GL_TEXTURE_2D, 3, image->sizeX, image->sizeY, GL_RGBA, GL_UNSIGNED_BYTE, image->data);

vap Постоялец www 8 дек. 2005 16:31 #7

при создании текстуры
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf);

Kerghan
И плюс ко всему, зачем использовать и GL_BLEND и GL_ALPHA_TEST, получится тот же эффект, что и просто при блендинге с опр. параметрами. Если хочешь, чтоб просто часть текстуры отрезалась, юзай просто альфа_тест+glAlphaFunc(GL_GREATER, <значение альфа-канала>), тогда будет отрисовываться ( вообще без изменений ) только те тексели, значение альфы которых > как сделать прозрачными текстуры значение, указанное после GL_GREATER. Ну и плюс то, что сказал Sim. И ещё: при загрузке текстуры также не забывай указывать, что она с альфой.

Sim
тока в таком случае там не 3, а 4

2ALL
че-то с четырьмя параметрами вообще ошибку при запуске выдает :-\
если до вечера ченть не надумаю, буду пробовать другой пример, там как раз что-то типа отсева пикселов по цвету.

Всем спасибо. Если еще какие предложения поступят буду рад или можт где исходик найти можно?

>2ALL
>че-то с четырьмя параметрами вообще ошибку при запуске выдает :-\
Это наверно от того, что грузишь текстуру с тремя компанентами а юзать указываешь 4, убедись что загружаешь альфу, и ваще из какого формата(чем, как) грузишь может там альфа и не сохраняется.

формат bmp, альфу добавил, хотя вообщето я с такой фигней раньше не работал
если кому не лень картинку можно взять здесь
http://www.gamedev.ru/download/?id=2810

Я уже вообшем-то нашел другой вариант, как я уже говорил там проверяется какого цвета пиксель и если он равен определенному цвету, то alpha=0 иначе alpha=1.

Ну и с этим уж все-таки хотелось бы до конца разобраться. Щас еще посмотрю, где ошибка :(

Удалён www 9 дек. 2005 14:02 #12

Kerghan
Э... ну это просто - рисуешь текстуру прозрачности.
Лучше всего - градиентную, там белый цвет - непрозрачная часть, черный - прозрачная, серый, ясен пень - полупрозрачная...
Вот такую текстуру используешь - проблем никаких не возникает автоматически.
Любую часть текстуры прозрачной можешь сделать без проблем.

Lis
ты про маску что ли?, не... это гемор с собой дубликат картинки таскать

/ Форум / Программирование игр / Графика

Тема в архиве.


Источник: http://www.GameDev.ru/code/forum/?id=20391


Как сделать прозрачную текстуру? Текстуры и декали DS-Servers


Как сделать прозрачными текстуры

Похожие новости


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




ШОКИРУЮЩИЕ НОВОСТИ