Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi wie schnell ist Andorra? (https://www.delphipraxis.net/124300-wie-schnell-ist-andorra.html)

EarlyBird 18. Nov 2008 09:42


wie schnell ist Andorra?
 
wie schnell ist Andorra 0.4?

Ich habe als Beispielprojekt PixelCheck verwendet.
Im oncreate des Formulares erstelle ich 2000 Sprites.
Jedes Sprite enthält ein Image das 25 Pixel breit und 900 Pixel hoch ist.
Die Sprites können alle untechiedliche Farben haben.
Nun werden alle Sprites von links nach rechts nenbeneinander positioniert
(Top :=1; Left :=X*25)
nach einem klick auf einen Button verschiebe ich nun alle Sprites in einer schleife 25Pixel nach links bis das letzte Sprite am Linken Bildschirm steht.
Ich habe das ganze mit verschiedenen Methoden probiert.

- AdSpriteEngine.X := AdSpriteEngine.X - 25 ;
- AdSpriteEngine.Move(-25);

Die Bilschirmauflösung geht bis zu 3200X900 (2Monitore)
Ich erreiche allerdings max 59 FPS mit OpenGL egal bei welcher Auflösung.
Das sollte doch auch schneller funktionieren oder?

Mit DirektX wird das ganze übrigens sehr schlecht dargestellt.
und die Geschwindigkeit ist stark von der Auflösung abhängig

Hardware:
4GB Ram
NVidia 9600

Wofür das Ganze gut ist?
Es wird ein visuelles Kontrollsystem.
In den "Farbbalken" werden auch noch Daten angezeigt.
Man soll damit sehr schnell unteschiedliche Zustände der Daten erkennen können.

Vieleicht gibt es für das ganze auch einen andern Ansatz, eventuell ohne Sprites?!?
Ich bin für jeden Tip und jede Anregung dankbar

Gruß EarlyBird

angos 18. Nov 2008 09:50

Re: wie schnell ist Andorra?
 
Hi,

Mir fehlen zwar die Erfahrungen mit Andorra, aber Gegenfrage: Wozu brauchst du mehr als 59 fps?


Gruß
Ansgar

mquadrat 18. Nov 2008 09:52

Re: wie schnell ist Andorra?
 
Vielleicht ist das Produktivsystem, auf dem gearbeitet werden soll, hardwarmäßig schwächer ausgestattet :gruebel:

EarlyBird 18. Nov 2008 10:00

Re: wie schnell ist Andorra?
 
Zitat:

Zitat von angos
Mir fehlen zwar die Erfahrungen mit Andorra, aber Gegenfrage: Wozu brauchst du mehr als 59 fps?

Bei 59fps brauche ich mindesten 30sec. um von links nach rechts zu srollen.
und das bei meiner doch recht gut ausgestatteten Hardware.
Bei älteren PCs wird es dann wohl unerträglich langsam.

Die 2000Stripes sind auch nur als Beispiel genannt.
Es können durchaus noch wesendlich mehr werden.

Gruß
EarlyBird

littleDave 18. Nov 2008 10:14

Re: wie schnell ist Andorra?
 
Hast du schon mal vSync abgeschaltet? Das kannst du global in den Einstellungen der Grafikkarte deaktivieren. Bei NVidia:

- Rechtsklick auf dem Desktop
- NVidia Control Panel auswählen
- Dann unter "3D Einstellungen" den Eintrag "3D Einstellungen verwalten" auswählen
- In der Liste dein Eintrag "Vertikale Synchronisierung" auswählen (bei mir ist es der vorletzte Eintrag)
- den Eintrag mal auf "Automatisch aus" setzen

Aber die Anzahl der FPS sollte nicht beeinflussen, wie lange du brauchst, um von links nach rechts zu scrollen (oder ähnlich). Das ganze nennt sich Timebased Movement. Es sollte bei jeder FPS-Anzahl egal gleich sein, wie lange man braucht.Bei jeder FPS-Anzahl sollte die Zeit, die man braucht, immer gleich sein.(so ist es besser)

hier (zweiter Absatz) hab ich mal versucht zu erklären, was vSync ist - nur fallst du es noch nicht weißt.

Gruber_Hans_12345 18. Nov 2008 10:30

Re: wie schnell ist Andorra?
 
Zitat:

Zitat von EarlyBird
Zitat:

Zitat von angos
Mir fehlen zwar die Erfahrungen mit Andorra, aber Gegenfrage: Wozu brauchst du mehr als 59 fps?

Bei 59fps brauche ich mindesten 30sec. um von links nach rechts zu srollen.
und das bei meiner doch recht gut ausgestatteten Hardware.
Bei älteren PCs wird es dann wohl unerträglich langsam.

Die 2000Stripes sind auch nur als Beispiel genannt.
Es können durchaus noch wesendlich mehr werden.

Gruß
EarlyBird

Nur so nebenbei, ich würde die Scrollbewegung nicht FPS abhängig machen, sondern einfach die Zeitmessen, und daraus dann die neue x und y position.
Dann ist es auch egal, ob 60 FPS oder 120FPS, und 60FPS ist ausreichend für sowas, wobei, bei Flachbildschirmen würde ich wirklich wie oben erwähnt das vSync kontrollieren ...

igel457 18. Nov 2008 13:11

Re: wie schnell ist Andorra?
 
Hallo,

der Parameter der DoMove Methode ist auch nicht dazu da, eine Konstante zu übergeben, sondern die Zeitdifferenz seit dem letzten Frame (siehe auch Tutorial 2/3). Damit kannst du dann ganz einfach das TimeBased Moving erreichen.

Ein weiteres Problem, das ich bei dir sehe: Eine Textur der Größe 25x900 ist eher suboptimal. Die Grafikkarte kann am besten quadratische Texturen verwalten. Wenn du also weitere Texturen dieser Größe hast, kannst du diese auf einer unterbringen und über die Pattern-Properties ansprechen.

Was sind das für "Daten" auf diesen Streifen? Text?

Wenn es um die Anzeige von solch "Statischen" Dingen geht, sind Sprites vielleicht sowieso der falsche Ansatz. Ich würde hier direkt Images verwenden.

Andorra 2D an sich ist relativ schnell (natürlich nicht ganz so schnell wie das native verwenden der Grafikschnittstellen), es kommt nur darauf an, wie effektiv man damit programmiert. Diese Arbeit kann dir aber keine Engine abnehmen.

3_of_8 18. Nov 2008 13:23

Re: wie schnell ist Andorra?
 
Sollte Höhe/Breite nicht außerdem eine Zweierpotenz sein?

igel457 18. Nov 2008 13:27

Re: wie schnell ist Andorra?
 
Macht Andorra automatisch - aus seiner Textur wird automatisch eine 32x1024 Textur. Die Überstände sind dann halt verschwendeter Speicherplatz.

EarlyBird 18. Nov 2008 13:59

Re: wie schnell ist Andorra?
 
Zitat:

Zitat von littleDave
Hast du schon mal vSync abgeschaltet?

Wenn ich vSync abschalte "fliegen die Frames nur so an mir vorbei"
über 600fps.(wobei das dann ja nicht ganz richtig ist, da ja nur ein Teil des Bildes fertig am Monitor ankommt)
Danke für Deine Erklärung unter hier zu vSync.



Zitat:

Zitat von igel457
Hallo,

der Parameter der DoMove Methode ist auch nicht dazu da, eine Konstante zu übergeben, sondern die Zeitdifferenz seit dem letzten Frame (siehe auch Tutorial 2/3). Damit kannst du dann ganz einfach das TimeBased Moving erreichen.

Habe ich auch nur für mein Testprojekt so genutzt (funktioniert aber auch)
Zitat:

Zitat von igel457
Ein weiteres Problem, das ich bei dir sehe: Eine Textur der Größe 25x900 ist eher suboptimal. Die Grafikkarte kann am besten quadratische Texturen verwalten. Wenn du also weitere Texturen dieser Größe hast, kannst du diese auf einer unterbringen und über die Pattern-Properties ansprechen.

Was sind das für "Daten" auf diesen Streifen? Text?

Wenn es um die Anzeige von solch "Statischen" Dingen geht, sind Sprites vielleicht sowieso der falsche Ansatz. Ich würde hier direkt Images verwenden.

Die Textur größe habe ich nicht bedacht. Danke für den Hinweis.

Ob ich mit den Sprites auf dem richrtigen Wege bin habe ich mich auch schon gefragt.
Allerdings schien es mir mit Images auch nicht schneller zu gehen.
Die Daten auf den Streifen kommen aus einer Datenbank und werden vertikal dargestellt.
Ich habe das ganze auch schon als "GDI-Projekt" fertiggestellt allerdings ist es nicht sehr performant.
Dann bin ich zufällig auf Andorra2D gestossen und nun versuche ich das ganze damit performanter zu bekommen.
Sprites habe ich gewählt weil ich die Streifen auch mit der Maus verschieben muss (auch multiselect).




Zitat:

Zitat von igel457
Andorra 2D an sich ist relativ schnell (natürlich nicht ganz so schnell wie das native verwenden der Grafikschnittstellen), es kommt nur darauf an, wie effektiv man damit programmiert.
Diese Arbeit kann dir aber keine Engine abnehmen.

Am effektiven programmieren mit Andorra abeite ich gerade.

Besten Dank erstmal für alle Tips
Gruß EarlyBird

EarlyBird 18. Nov 2008 20:08

Re: wie schnell ist Andorra?
 
Zitat:

Zitat von igel457
Wenn es um die Anzeige von solch "Statischen" Dingen geht, sind Sprites vielleicht sowieso der falsche Ansatz. Ich würde hier direkt Images verwenden.

Ich möchte es gern mit Images testen, mir fehlt aber noch der richtige Ansatz.
Kann ich ein Image direkt in Andorra2D erstellen?
oder muss ich eine Textur laden?
Ist es besser eine ImageList zu verwende oder besser nur ein Image?

Bin für jeden Tip dankbar
Gruß
Earlybird

igel457 19. Nov 2008 14:39

Re: wie schnell ist Andorra?
 
Du kannst Images natürlich einfach direkt erstellen:

Delphi-Quellcode:
AdImage := TAdImage.Create(TAdDraw);

//Variante 1 - Bild wird aus einer Datei geladen
AdImage.Texture.LoadGraphicFromFile('C:\test.png');

//Variante 2 - Bild wird aus einem TGraphic-Objekt geladen
AdImage.Texture.LoadFromGraphic(bmp);


AdImage.Restore; //Wichtig


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 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