I think that it doesn't have. But you can add Layers with using multiple bgrabitmap in memory.
One for the background, the biggest bitmap where to put all the layers, the others for each visual object you have. For example:
bgra1_ transparent background 640x480 << this is the final bitmap
bgra2_ a picture with an sky and a floor << resample to 640x480 to fit
bgra3_ a drawing of a tree 300x400 at pos 170,40 << put in the position you want
manage with something like:
TBGRALayerPosition = record
x, y: integer;
Source: TBGRACustomBitmap;
mode: TDrawMode;
AOpacity: byte;
end;
TBGRALayerPositions = array of TBGRALayerPosition;
this is an example with a bgravirtualscreen and two rectangles. Every time you update the virtualscreen the order of the layers will switch (is a public boolean variable in the form), the black square in bottom and the red in top, the black in top and the red in bottom.
procedure TForm1.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);
var
layers: TBGRALayerPositions;
bgra_2, bgra_3: TBGRABitmap;
o,p,i: integer;
begin
SetLength(layers,2);
bgra_2 := TBGRABitmap.Create(100,100, BGRABlack);
bgra_3 := TBGRABitmap.Create(100,100, BGRA(255,0,0,255));
if switch then
begin
o := 1;
p := 0;
switch := not switch;
end
else
begin
o := 0;
p := 1;
switch := not switch;
end;
with layers[o]do
begin
x := 10;
y := 10;
mode := dmSet;
AOpacity := 255;
Source := bgra_2;
end;
with layers[p]do
begin
x := 50;
y := 50;
mode := dmSet;
AOpacity := 255;
Source := bgra_3;
end;
for i:=0 to High(layers) do
Bitmap.PutImage(layers[i].x, layers[i].y, layers[i].Source, layers[i].mode, layers[i].AOpacity);
bgra_2.Free;
bgra_3.Free;
end;
you only need to change the order of the addition in the array and that's all.
Of course it needs to be well coded with usefull procedures, object oriented...