![]() |
Re: Andorra 2D [Ver. 0.40, 01.07.08]
Liste der Anhänge anzeigen (Anzahl: 1)
Moin zusammen.
Auch wenn Andreas im Urlaub ist, kann mir vielleicht jemand helfen. Ich habe auf die 0.4 gewechselt (und musste beim TAdSetupDlg ein paar Kleinigkeiten ändern), sehe aber jetzt nicht mehr meine Landschaft im ganzen, sondern eine nahezu schwarze Fläche, und nur beim scrollen oben links in der Ecke einen kleinen Teil des Spielfeldes, der aber auch immer wieder im Schwarz verschwindet. Jemand eine Ahnung was zu tun ist (DLLs schon durch die von 0.4 ersetzt) |
Re: Andorra 2D [Ver. 0.40, 01.07.08]
Für die nicht so versierten: was bringen die Neuerungen wie die Shadersache? Beispielscreenshots oder Demos der neuen Funktionen? :]
|
Re: Andorra 2D [Ver. 0.40, 01.07.08]
Unter anderem kannst du damit Texturen auf der GPU manipulieren und anderes aufwändiges Grafikzeug dorthin auslagern, um die CPU zu schonen.
|
Re: Andorra 2D [Ver. 0.40, 01.07.08]
Hey,
cool dass es jetzt Shader gibt. Jetzt muss ich nur noch lernen wie man die programmiert xD Gibts denn ein Tutorial wie man die einbindet? |
Re: Andorra 2D [Ver. 0.40, 01.07.08]
Nein. Aber du kannst dir ja mal die
![]() |
Re: Andorra 2D [Ver. 0.40, 01.07.08]
Zitat:
Und was für Kleinigkeiten musstest du anpassen? |
Re: Andorra 2D [Ver. 0.40, 01.07.08]
hm, mal so weit wie möglich zusammengezurrt:
Delphi-Quellcode:
und die Idle-Routine:
var
AdSetupDlg: TAdSetup; begin AdDraw := TAdDraw.Create(Parent); AdSetupDlg := TAdSetup.Create(Canvas); AdSetupDlg.Image := 'Logo.png'; if AdSetupDlg.Execute then begin if Canvas.Initialize then begin State := [rsFPS, rsMap]; InputState := []; end else begin Result := False; Exit; end; end else halt; AdSetupDlg.Free; Result := True; Application.OnIdle := Idle; // Renderingschleife zuweisen
Delphi-Quellcode:
Und nein, ich rufe kein Setup2D-Engine auf. Sollte ich es denn tun?
PerformanceCounter.Calculate;
DoScroll(PerformanceCounter.TimeGap); // Scroll in der Sprite-Engine if Canvas.CanDraw then //Wenn überhaupt auf das AdDraw gezeichnet werden kann dann... begin Canvas.ClearSurface(0); //Füllt die Oberfläche mit schwarzer Farbe Canvas.BeginScene; if (rsFPS in State) then RenderFPS; if (rsMap in State) begin SpriteEngine.Dead; SpriteEngine.Draw; end; Canvas.EndScene; Canvas.Flip; //Präsentiert die gezeichneten Dinge auf dem Bildschirm. end; Und die Kleinigkeiten: Der Parameter im Konstruktor von TAdSetupDlg ist kein Form mehr, sondern ein TAdDraw und es gibt die Properties Parent (TForm) und ... noch eins (vergessen) nicht mehr |
Re: Andorra 2D [Ver. 0.40, 01.07.08]
Zeig mir bitte mal die Stelle, an der du die SpriteEngine erstellst.
Was genau da schief geht kann ich dir leider nicht sagen, da musst du eventuell warten bis der Igel wieder da ist. Was mir beim Anschauen des Andorra-Codes eben aufgefallen ist, ist dass offenbar das interne Surface-Rect der Spriteengine erst beim Aufruf von TSpriteEngine.Move gesetzt bzw aktualisiert wird. Vielleicht hilft einmaliger oder regelmäßiger Aufruf von Move. |
Re: Andorra 2D [Ver. 0.40, 01.07.08]
Args, der Aufruf von Move im Idle hat alles geklärt. Ist aber wohl auch erst seit der 0.4 so.
Move hatte ich bisher nicht drin, weil noch keine Animationen oder Bewegungen drin waren (und scrollen klappte mit 0.35 auch so :mrgreen: ). Danke für die Hilfe :thumb: |
Re: Andorra 2D [Ver. 0.40, 01.07.08]
Ich halte das auch für nicht gewollt. Das eigene Surface sollte eigentlich auch vorher schon einmal gesetzt werden. ich schreib's mir auf und sag es dem Igel wenn er wieder da ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 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