Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2009, 18:05   #1
devi409
Пользователь
 
Регистрация: 28.12.2006
Сообщений: 75
По умолчанию Не получается сделать прозрачную текстуру

Здраствуйте уважаемые.
Заранее прошу извенение за то что вдруг могу повториться с вопросом и гдето уже когдато такое писали но на просмот всего форума нет времени.
Работа с OpenGl в delphi.
Задача такова: хочу нарисовать дерево для этого просто использью конус в качестве ствола ну и несколько плоскостей с текстрокой кроны однако не могу добиться того чтобы например белый цвет был прозрачным и оставались только зеленые листочки.
Думал проблему решить через маскирование. Читал уроки Hene но так ничего не понял получается странный эффект. прозрачность действет только на ствол а на другие объектны как прямоугольники не действет в место прозрачности белый цвет.
Использую для загрузки текстур откудато давно взятый готовый написаный модуль Textures.pas
Он меня во всем удовлетворяет. так вот там есть подердка картинок в TGA формате а как известно в нем есть Альфа составляющая - прозрачность (на счет того что есть это точно сам проверял наличии альфа состовляющей). Дак может с помощью этого модуля можно решить данную пробьлему?
Подскажите плиз.
devi409 вне форума Ответить с цитированием
Старый 19.03.2009, 04:52   #2
lerka
Пользователь
 
Аватар для lerka
 
Регистрация: 19.03.2009
Сообщений: 14
По умолчанию

надо маску сделать:
Код:
glNewList(TREE, GL_COMPILE);
  PrepareImage('bmp\Tree1.bmp', maska);
    glBegin(GL_QUADS);
      {плоскость на которой текстурка} 
    glEnd; // так для каждой плоскости, на которой текстура должна быть, а после:
glEndList;
и нужно будет 2 картинки, в данном случае: tree1.bmp - фото дерева и tree1m.bmp - альфа-канал (само дерево белое, а вокруг все черное)

вроде так

Последний раз редактировалось lerka; 19.03.2009 в 05:03. Причина: код переоформила
lerka вне форума Ответить с цитированием
Старый 19.03.2009, 07:03   #3
devi409
Пользователь
 
Регистрация: 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
devi409 вне форума Ответить с цитированием
Старый 19.03.2009, 16:13   #4
Adler
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 19
По умолчанию

devi409
ну у вас и методы)))
Аалфа канал юзается так: Включаем смешивание цветов glEnable(GL_BLEND);
потом устанавливаем функцию смешивания.
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MIN US_SRC_ALPHA); // обычное смешивание
или
glBlendFunc(GL_SRC_ALPHA,GL_ONE); // сложение
Adler вне форума Ответить с цитированием
Старый 19.03.2009, 16:52   #5
devi409
Пользователь
 
Регистрация: 28.12.2006
Сообщений: 75
По умолчанию

странно но не о каком включении смешивания я не производил. для маскирования да надо, а сдесь то зачем?
devi409 вне форума Ответить с цитированием
Старый 25.03.2009, 05:47   #6
sherlock12
Заблокирован
 
Регистрация: 18.03.2009
Сообщений: 2
Лампочка warhammer accounts

Wrath of the lich king cd key, wotlk cd key, wow cd key, wow key, [size=9pt]Aion gold[/size]
sherlock12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается отсортировать 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