Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.28;
Скачать: CL | DM;

Вниз

Прозрачность и текстура   Найти похожие ветки 

 
Зм1й ©   (2006-10-28 16:54) [0]

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


 
XProger ©   (2006-10-28 17:26) [1]

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


 
Зм1й ©   (2006-10-28 17:37) [2]


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

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


 
XProger ©   (2006-10-28 17:44) [3]

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


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


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

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


 
XProger ©   (2006-10-28 17:52) [5]

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


 
Зм1й ©   (2006-10-28 18:24) [6]


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

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


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

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


 
XProger ©   (2006-10-28 20:29) [7]

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



Страницы: 1 вся ветка

Текущий архив: 2007.10.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
15-1191497196
iZEN
2007-10-04 15:26
2007.10.28
50 лет первому ИСЗ, во что верить?


2-1191302087
Ping
2007-10-02 09:14
2007.10.28
Понизить приоритет сообщения в очереди окна


6-1171944967
zap8
2007-02-20 07:16
2007.10.28
(GET) Как более эффективно "избавиться от заголовка" полученнного


15-1190734016
ProgRAMmer Dimonych
2007-09-25 19:26
2007.10.28
Вопрос по ресурсам


2-1191341870
Pacific
2007-10-02 20:17
2007.10.28
Ошибка(