Hat jemand zufällig eine Idee woran das Problem lag bzw. liegt? Ich habe das Problem unter iOS, dass mein Viewport nicht angezeigt wird. Was unter Berlin noch problemlos ging, schaut jetzt wie im Anhang aus. Irgendwie wird nur ein kleiner Teil angezeigt und auch nicht an der korrekten Position. Unter Berlin lief es noch einwandfrei.
Jetzt habe ich versucht das ganze umzustellen auf ein reines TForm3D und bin über ein weiteres Problem gestolpert.
Mittels folgendem Code erstelle ich ein Screenshot:
Delphi-Quellcode:
procedure GenerateFormImageExt(AForm: TCommonCustomForm; ABmp: TBitmap);
var
AScale: single;
begin
TThread.Synchronize(TThread.CurrentThread,
procedure()
begin
AScale := GetScreenScale(False);
ABmp.Clear(claNull);
ABmp.BitmapScale := AScale;
ABmp.Width := Round(AForm.Width * AScale);
ABmp.Height := Round(AForm.Height * AScale);
if AForm is TForm then
begin
ABmp.Canvas.BeginScene;
TForm(AForm).PaintTo(ABmp.Canvas);
ABmp.Canvas.EndScene;
end
else if AForm is TForm3D then
TForm3D(AForm).Context.CopyToBitmap(ABmp, ABmp.Bounds);
end);
end;
Das geht unter DX11 und DX9, aber bei GLES (also auf den anderen Systemen) sieht man nur einen kleinen Ausschnitt. CopyToBitmap ruft procedure TCustomContextOpenGL.DoCopyToBits(const Bits: Pointer; const Pitch: Integer; const ARect: TRect); auf, aber der Code scheint mir nicht fehlerhaft, sondern entspricht im Endeffekt dem was ich schon seit Jahren mit
OpenGL veranstalte.
Irgendwie ist das alles ziemlich unbefriedigend
Christian