![]() |
[DelphiX] Ruckelproblem wegen zu hoher Grafikqualität
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
wenn bei DelphiX die Grafikqualität zu hoch ist (GTA2-Niveau), dann ruckelt es, wenn der Timer eine Bewegung zu rendern hat. Hat jemand von euch eine Idee, wie man eine Straße mit einer eigentlich schlechteren Grafikqualität dennoch gut aussehen lassen kann ? Im Anhang wird gezeigt, bei welcher Grafik es ruckelt. |
Re: [DelphiX] Ruckelproblem wegen zu hoher Grafikqualität
Ich kann mir nicht vorstellen, dass es von diesem Bitmap beginnt zu ruckeln.
Wie wäre es mit etwas Code? //EDIT: Was ist an dieser Grafik so "hoch-qualitativ" als an anderen? Ist das 32Bit? |
Re: [DelphiX] Ruckelproblem wegen zu hoher Grafikqualität
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich die Grafik mit Paint erstellen würde, würde es laufen. Hier der Code:
Delphi-Quellcode:
Falls du die DXMap noch nicht hast, findest du sie im Anhang. Du musst aber DelphiX deinstallieren und dann diese Version neuinstallieren, wenn du direkt das map-Package installieren willst, bekommst du eine AV.
TCar = class(TImageSpriteEx)
private speed: Single; public constructor Create(AParent: TSprite); override; procedure DoMove(MoveCount: Integer); override; end; var frmMain : TfrmMain; Car : TCar; implementation {$R *.DFM} constructor TCar.Create(AParent: TSprite); begin inherited Create(AParent); Speed := 0; end; procedure TCar.DoMove(MoveCount: Integer); begin inherited DoMove(MoveCount); if (isLeft in frmMain.DXInput.States) and (speed <> 0) then if speed < 0 then Angle := angle + 1 else Angle := angle - 1; if (isRight in frmMain.DXInput.States) and (speed <> 0) then if speed < 0 then Angle := angle - 1 else Angle := angle + 1; if isUp in frmMain.DXInput.States then begin if speed < 7 then speed := speed + 0.05; end; if isDown in frmMain.DXInput.States then begin if speed < 7 then speed := speed - 0.05; end; X := X + cos256(Angle) * speed; if (x <= 0)(* or (x + width >= frmMain.DXDraw.Width)*) then begin x := x - cos256(Angle) * speed; speed := 0; end; Y := Y + sin256(Angle) * speed; if (y <= 0) or (y + height >= frmMain.DXDraw.height) then begin y := y - sin256(Angle) * speed; speed := 0; end; end; procedure TfrmMain.FormCreate(Sender: TObject); begin DXMap.LoadMap('map\maps\map2.dxm'); Car := TCar.Create(DXSpriteEngine.Engine); with Car do begin Image := frmMain.DXImageList.Items.Find('Car'); X := 150; Y := 380; Z := 0; Width := Car.Image.Width; Height := Car.Image.Height; end; end; // Interval=0 procedure TfrmMain.DXTimerTimer(Sender: TObject; LagCount: Integer); begin DXInput.Update; DXSpriteEngine.Move(1); DXDraw.Surface.Fill(RGB(13, 180, 50)); DXDraw.Surface.Fill(clBlack); with DXDraw.Surface.Canvas do begin Brush.Style := bsClear; Font.Size := 12; Font.Color := clRed; TextOut(0,0, 'FPS: ' + IntToStr(LagCount)); Release; end; SpriteEngineMap.Draw; DXSpriteEngine.Draw; DXDraw.Flip; end; procedure TfrmMain.FormDestroy(Sender: TObject); begin if not (DXMap = nil) then begin DXMap.Free; end; if not (DXDraw = nil) then begin DXDraw.Free; end; end; |
Re: [DelphiX] Ruckelproblem wegen zu hoher Grafikqualität
Zitat:
Du vermischst DirectX und GDI. Wenn du mit DirectX(/DelphiX) arbeitest, vergiss, dasses soetwas wie den Canvas ueberhaupt gibt. DXDraw sollte eigentlich eigene Methoden zum Zeichnen von Text mitbringen, in meinen Augen wirkt das Schreiben auf den Canvas wie ne gezogene Handbremse ;) greetz Mike |
Re: [DelphiX] Ruckelproblem wegen zu hoher Grafikqualität
ich hatte dieses Ruckel Problem auch aber bei einer 30 mb großen Grafik. Ich hab das gelöst indem ich das in den Arbeitsspeicher geschrieben habe.
Wenn du die Bilder in der DXImagelist hast kannst du dann wenn du auf das bild in der liste klickst (OI) SystemMemory auf true setzen |
Re: [DelphiX] Ruckelproblem wegen zu hoher Grafikqualität
SystemMemory stand schon auf True. Mikes Lösung ist dir richtige, es ruckelt nur noch leicht. Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz