-
полно примеров по OpenGL с текстурами, но нету с альфа каналом((
точнее они есть, но совсем не те что надо. а нужен самый простой КЛАССИЧЕСКИЙ так сказать пример. тоесть есть RGB(сам цвет) + четвертый байт A(альфа). как я понимаю A=255 => RGB=100%(тоесть посностью закрывает в этом пикселе задний фон) A=0 => RGB=0% (полностью позрачный) A=128 => RGB=50%(вот тут я уже начинаю как это все должно сумироваться).
да, да я даже догадываюсь что вы сейчас скажите ;) => glBlendFunc. да я ее смотрел честно говоря за последние пару дней вообще запутался как это работает она и подобные ей. вообще что мне конкретно надо: если RGB(255,255,255) А(0) то не рисовать вообще ничего. максимум что получалось так RGB(0,0,0) А(0) =>0% тоесть если в альфе канале 0 то в картинке должна быть "дырка". как я понимаю тут надо правильно сделать инициализвцию OpenGL, правильно загрузить текстуру с Альфой и правильно включить режим смешивания. но как я говорил в сети полно примеров со всякими "фичами" с прозрачностью а нужного такого простого нет. да статей тоже полно где вроде все просто описывается (опять про "фишки" "кульнве" с альфой) .
Спасайте ((
-
Вот что бывает, когда графикой занимаешься не понимая математики... Что греха таить, сам такой был.
Если нужна просто дырка, то блендинг не нужен. Достаточно альфа теста: glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER,0.0);
Блендинг нужен, когда нужны градации прозрачности.
В качестве загрузки текстур рекомендую использовать TGA. Крайне простой формат(если игнорировать сжатие и индексные цвета), поддерживающий альфу.
-
Извините, что вмешиваюсь, но не подскажете ли нормальный редактор позволяющий работать с ТГА и альфой? Или хотя бы конвертировать ПНГ в ТГА
-
> [2] tButton © (07.04.09 09:52)
GIMP
-
-
> Блендинг нужен, когда нужны градации прозрачности.
> Если нужна просто дырка, то блендинг не нужен. > Достаточно альфа теста: > glEnable(GL_ALPHA_TEST); > glAlphaFunc(GL_GREATER,0.0);
Так, а я не понял, куда это нужно будет вставлять, и что получится, если посмотреть там на тыльную сторону Этой дырки.
-
в код
-
Я Бурно смеюсь). Конкретно куда Я вот этой функции не знаю :glAlphaFunc(GL_GREATER,0.0); Не было в учебнике. Вы не могли бы мне разъяснить?
-
-
благодарю - дейсвительно это логично
-
Теперь у меня вопрос - чем это отличается от буфера трафарета? glEnabie(GL_STENCIL_TEST) как я понимаю, результат один -дырка.
-
Тем что это НЕ буффер трафарета. Вопроса глупее не слышал. Рекомендую всеже ознакомится с матчастью, прежде чем задавать вопросы. Судя по всему, пока вы не поймете как работает графика - будете фигней страдать.
-
. > Тем что это НЕ буффер трафарета
Это то я как раз понимаю Я имел в виду "если результат одинаков, то следует искать более динамичный вариант". Как я понимаю, сдесь будет проще использовать именно трафарет. Ведь трафарет можно перезаполнять быстрее, чем пересоздавать текстуру + альфа канал к ней
-
Вы явно не понимаете о чем говорите. Еще раз:
> Судя по всему, пока вы не поймете как работает графика - > будете фигней страдать.
-
Подождите-ка. Давай те ка разберёмся. Признаюсь, Были проблемы с блендфунк, Но раз на практике они исправлены, то и в теории ничего не понимать я не могу. (Горячая дискуссия начинается :) ). Мы имеем входную текстуру, ну там примитив. Он имеет какое либо значение альфа, которое сравнивается с заданым функцией, после чего прошедшие тест части примитива отображаются. Я это правильно понимаю?
-
Соответственно этот примитив(текстуру) нужно создать заново, в случае, если мы хотим поменять прозрачные оьбласти.
-
тоесть переназначить альфу
-
Я имел в виду вызов глтекстуре2д с предыдущим текстуре[x,y,3]:=f;
-
буфер же трафарета , как мне кажется будет здесь более уместен именно потому, что он как я понимаю, представляет лишь маску, массив, который по определению переназначать быстрее, а не полупрозрачную текстуру.
Кстатьи прошу простить меня за возможную неграмотность в данном вопросе и пожалуйста поподробнее разьяснить мне мои заблуждения. Боюсь как бы мне не пришлось переучивать эти темы).
-
Как ты будешь делать дырку с помошью стенсиля? Алгоритм по шагам опиши
|