![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с прозрачными объектами в GLScene [Delphi, GLScene]
tERRORist © (2005-07-03 13:53:00)Возможно вопрос решается легко, но пока не нашел ответа. Из примеров я так понял что нужный эффект устанавливается свойством GLScene.ObjectsSorting и соответствующей сортировкой объектов в дереве сцены. Но как быть например в случае если имеются два полупрозрачных GLMesh, представляющие собой спирали, закрученные между собой (как молекула ДНК). Тогда тот меш, который в иерархии стоит ниже в некоторых местах перекрывает первый.
Fosgen (2005-07-04 17:26:00) [1]Я тут недавно возился с такой ситуевиной. В общем - все делается в настройках тектур (так надежнее - хотя не единственный вариант).
Blending Mode:=bmTransparency;
ImageAlpha:=tiaSuperBlackTransparent;
TextureMode:=tmReplace;
Это для прозрачных объектов не изменяемой прозрачности\яркости
Для объектов изменяемой прозрачности\яркости (не аддитивный блендинг):
Blending Mode:=bmAdditive;
ImageAlpha:=tiaSuperBlackTransparent;
TextureMode:=tmModulate;
FrontProperties.Emission.Red:=255;
FrontProperties.Emission.Green:=255;
FrontProperties.Emission.Blue:=255;
проверено на видеокарте Ati Radeon 9550. Может быть будет работать и на GeForce'ах.
проверено для карт nVidia (то же самое на ATi дает артефакты):
Blending Mode:=bmAdditive;
ImageAlpha:=tiaDefault;
TextureMode:=tmReplace;
Это для прозрачных объектов не изменяемой прозрачности\яркости (не аддитивный блендинг)
Для объектов изменяемой прозрачности\яркости:
Blending Mode:=bmAdditive;
ImageAlpha:=tiaDefault;
TextureMode:=tmDecal;
Разумеется во всех указанных случаях в текстуре цвет RGB(0,0,0) - считается прозрачным. При использовании таких текстур на спрайтах - важен вывод их с отключением Z-буффера (NoZWrite:=True).
A22 (2005-07-04 16:25:00) [2]самый простой способ - выводить прозрачные объекты не со смешиванием по альфа-каналу, а с обычным аддитивным блендингом, т.е. сложением. хз как в GL, а в D3D это есть флаг D3D_BLEND_ONE в параметрах бленда. посмотри, вдруг подойдет
A22 (2005-07-04 16:25:00) [3]кстати, при таком бленде и сортировать объекты не надо перед выводом