Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прозрачность и текстура [Delphi, OpenGL]


Зм1й ©   (2006-10-28 16:54:00) 

Когда объект покрыт текстурой с полупрозрачными участками, то через них просматривается фон, а не другие объекты (при функции смешения (SRC_ALPHA, ONE_MINUS_SRC_ALPHA) и включённом тесте глубины). Подскажите пожалуйста, как сделать, чтобы просматривались другие объекты.


XProger   (2006-10-28 20:29:00) [1]

Зм1й, пересекающиеся полупрозрачные грани необходимо выводить в последнюю очередь с glDepthMask(False) или же разбивать их...
Есть другие, достаточно тормозные методы с использованием шейдеров http://delphi3d.net/download/oit.zip


Зм1й   (2006-10-28 18:24:00) [2]


> XProger ©   (28.10.06 17:52) [5]

Ты точно уверен, что не существует других способов?


> Если полупрозрачные участки нужно видеть через полупрозрачные
> - нужно бить на грани
> Если непрозрачные через полупрозрачные - можно на группы
> граней прозрачные/полупрозрачные объект побить.

Мне нужен второй способ.
Но я не совсем понимаю... Если только отсортировать грани, то при выводе без теста глубины пересекающихся граней они ведь должны отображаться неверно, если не разбивать сами грани


XProger   (2006-10-28 17:52:00) [3]

Зм1й, если нужна полупрозрачность - да :)
Если полупрозрачные участки нужно видеть через полупрозрачные - нужно бить на грани
Если непрозрачные через полупрозрачные - можно на группы граней прозрачные/полупрозрачные объект побить.


Зм1й   (2006-10-28 17:49:00) [4]


> XProger ©   (28.10.06 17:44) [3]

Ты подразумеваешь, что нужно проводить разбиение граней?


XProger   (2006-10-28 17:44:00) [5]

Зм1й, так прозрачные участки не пишутся в ZBuffer
Если в данном случае необходима полупрозрачность:
1) Сортировка полигонов при отрисовке (сначала непрозрачные, затем прозрачные)
2) glDepthMask(False)


Зм1й   (2006-10-28 17:37:00) [6]


> XProger ©   (28.10.06 17:26) [1]
> glEnable(GL_ALPHA_TEST);
> glAlphaFunc(GL_GREATER, 0.1);

Но так полупрозрачные участки становятся либо полностью прозрачными, либо полностью непрозрачными.  Необходимо сохранить полупрозрачность. (прямо скороговорка получилась :))


XProger   (2006-10-28 17:26:00) [7]

glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.1);


Наверх

Титульная страница Поиск, карта сайта Написать письмо