|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.03.2009, 18:05 | #1 |
Пользователь
Регистрация: 28.12.2006
Сообщений: 75
|
Не получается сделать прозрачную текстуру
Здраствуйте уважаемые.
Заранее прошу извенение за то что вдруг могу повториться с вопросом и гдето уже когдато такое писали но на просмот всего форума нет времени. Работа с OpenGl в delphi. Задача такова: хочу нарисовать дерево для этого просто использью конус в качестве ствола ну и несколько плоскостей с текстрокой кроны однако не могу добиться того чтобы например белый цвет был прозрачным и оставались только зеленые листочки. Думал проблему решить через маскирование. Читал уроки Hene но так ничего не понял получается странный эффект. прозрачность действет только на ствол а на другие объектны как прямоугольники не действет в место прозрачности белый цвет. Использую для загрузки текстур откудато давно взятый готовый написаный модуль Textures.pas Он меня во всем удовлетворяет. так вот там есть подердка картинок в TGA формате а как известно в нем есть Альфа составляющая - прозрачность (на счет того что есть это точно сам проверял наличии альфа состовляющей). Дак может с помощью этого модуля можно решить данную пробьлему? Подскажите плиз. |
19.03.2009, 04:52 | #2 |
Пользователь
Регистрация: 19.03.2009
Сообщений: 14
|
надо маску сделать:
Код:
вроде так Последний раз редактировалось lerka; 19.03.2009 в 05:03. Причина: код переоформила |
19.03.2009, 07:03 | #3 |
Пользователь
Регистрация: 28.12.2006
Сообщений: 75
|
Спасимо но уже разобрался.
все намного проще. тот файл Texteres.pas как я и говорил имеет поддержку загрузки TGA изображений. в TGA есть альфа канал поэтому вся работа сводится к созданию текстуры в фотошопе с альфа каналом и сохранить его под TGA а в инициализации графической среды надо прописать gldisable (GL_ALPHA_TEST); // разрешить тест на альфа канал glAlphaFunc (GL_GREATER, 0.5); Режим отсеивания в данном случае все что больше 0.5 показать. осталось только указать какую текстуру использовать: glBindTexture(GL_TEXTURE_2D, Texture[27]); glBegin(GL_QUADS); glNormal3f(0, -1, 0); glTexCoord(0.5, 1); glVertex3f (0,0.2,0); glTexCoord(0, 1); glVertex3f (0,0,0.4); glTexCoord(0, 0.3); glVertex3f (3,0,0.4); glTexCoord(0.5, 0.3); glVertex3f (3,0.2,0); glEnd; где Texture[27] это функция из библиотеки Textures.pas |
19.03.2009, 16:13 | #4 |
Пользователь
Регистрация: 26.02.2009
Сообщений: 19
|
devi409
ну у вас и методы))) Аалфа канал юзается так: Включаем смешивание цветов glEnable(GL_BLEND); потом устанавливаем функцию смешивания. glBlendFunc(GL_SRC_ALPHA,GL_ONE_MIN US_SRC_ALPHA); // обычное смешивание или glBlendFunc(GL_SRC_ALPHA,GL_ONE); // сложение |
19.03.2009, 16:52 | #5 |
Пользователь
Регистрация: 28.12.2006
Сообщений: 75
|
странно но не о каком включении смешивания я не производил. для маскирования да надо, а сдесь то зачем?
|
25.03.2009, 05:47 | #6 |
Заблокирован
Регистрация: 18.03.2009
Сообщений: 2
|
warhammer accounts
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не получается отсортировать | nec117 | Общие вопросы C/C++ | 3 | 27.02.2009 20:42 |
Почему-то не получается.... | lionman | Помощь студентам | 7 | 07.12.2008 11:35 |
не получается программирование COM | Nikuzkin | Общие вопросы Delphi | 9 | 11.06.2008 14:23 |
Не получается..... | Delpher | HTML и CSS | 2 | 25.12.2007 13:17 |
OpenGl+Delphi,при загрузке текстуру сильно корежит | Skif | Помощь студентам | 1 | 27.11.2007 08:40 |