Delphi 10.1 Berlin Update 1
На форме два TPlane'a, один позади другого. На каждый накладываются текстурки из png с альфа-каналом (TTextureMaterialSource).
Если привязывать MaterialSource'ы в дизайн-тайме (кидать для каждого TPlane'a на форму свой TTextureMaterialSource),
альфа-канал обрабатывается корректно (в прозрачных участках видно, что находится "позади" TPlane'a).
Если создавать TTextureMaterialSource и привязывать в рантайме, то при при повороте TPlane'ов прозрачность исчезает, и всё, что позади переднего TPlane'а, перестаёт рендериться.
Привязываю так:
procedure TForm1.FormCreate(Sender: TObject);
var
MS1, MS2: TTextureMaterialSource;
begin
MS1 := TTextureMaterialSource.Create(Plane1);
MS2 := TTextureMaterialSource.Create(Plane2);
MS1.Parent := Form1;
MS2.Parent := Form1;
Plane1.MaterialSource := MS1;
Plane2.MaterialSource := MS2;
MS1.Texture.LoadFromFile('C:\Users\Администратор\Pictures\TestTransparentTexture.png');
MS2.Texture.LoadFromFile('C:\Users\Администратор\Pictures\TestFilledTexture.png');
end;
И результат - задняя красная панелька не рендерится за большой передней:
То же самое, но с TTextureMaterialSource'ами, привязанными в дизайн-тайме через визуальные компоненты (как должно быть):
Как это исправить? TPlane'ов будет много, на каждую панельку кидать свой компонент материала - не вариант.
Проект в аттаче
TransparentPlane.zip