Delphi-PRAXiS
Seite 18 von 36   « Erste     8161718 192028     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Shape Wars - Version 2.0.0 (https://www.delphipraxis.net/159339-shape-wars-version-2-0-0-a.html)

EWeiss 14. Apr 2011 21:01

AW: Shape Wars - Version 1.0
 
Zitat:

Zitat von Aphton (Beitrag 1095206)
Zitat:

Zitat von EWeiss (Beitrag 1095203)
Du meinst mit wechseln das einbinden.. hab ich verstanden :)
Das hat aber nichts mit dem einladen der Texturen ansich zu tun.
gruss

Es geht ja nicht um das Reinladen der Texturen. Das spielt performancetechnisch überhaupt keine Rolle, da dies ja nur 1x geschieht und nicht öfters!

xD

Wenn ich sie einmal eingeladen habe und einmal zugewiesen ist muss ich sie nicht jedesmal neu binden.
Irgendwie reden wir aneinandner vorbei ;) meinen aber das selbe.

Zitat:

@EWeiss
Du weißt aber schon, dass Texturen auf den VRam geladen werden und wenn dieser Speicher nicht allzu groß ist, es zu Fehlern führen wird?
Heutzutage gibts noch Rechner, die < 64 mb Video RAM haben!

Wenn so ein AVI Video 24 Frames/Sekunde hat
Habe ich nicht da jede Texture (frame) nach gebrauch wieder freigegeben wird.
Ahjo und mein Video hat 32 Frames in der Sekunde sonst sieht das nix aus ;)
Glaube mir ich habe 0% CPU auch wenn ich die neue Texture jedesmal neu einbinden muss (glBindTexture)

gruss

EWeiss 14. Apr 2011 21:04

AW: Shape Wars - Version 1.0
 
Zitat:

Zitat von NamenLozer (Beitrag 1095207)
@EWeiss: Der GPU ist es doch egal, ob die Texturdaten aus einem JPG, einem PNG oder einem TGA stammen, denn der Texture-Loader wandelt sie ja in ein einheitliches Format.

Es sollte kein Problem sein, zumindest alle Sprites in eine Textur zu packen. Den Hintergrund kannst man ja meinetwegen in eine Extratextur packen. Aber auch so verringert sich die Anzahl der Texturwechsel erheblich.

Ich habe es anderes verstanden das du quasi ein png format in ein bitmap format einbinden willst und
aus diesem die Texture blitten willst.

Aber jetzt wird es langsam OT!

gruss

Aphton 14. Apr 2011 21:14

AW: Shape Wars - Version 1.0
 
Zitat:

Zitat von EWeiss (Beitrag 1095208)
Zitat:

Zitat von Aphton (Beitrag 1095206)
Zitat:

Zitat von EWeiss (Beitrag 1095203)
Du meinst mit wechseln das einbinden.. hab ich verstanden :)
Das hat aber nichts mit dem einladen der Texturen ansich zu tun.
gruss

Es geht ja nicht um das Reinladen der Texturen. Das spielt performancetechnisch überhaupt keine Rolle, da dies ja nur 1x geschieht und nicht öfters!

xD

Wenn ich sie einmal eingeladen habe und einmal zugewiesen ist muss ich sie nicht jedesmal neu binden.
Irgendwie reden wir aneinandner vorbei ;) meinen aber das selbe.

Zitat:

@EWeiss
Du weißt aber schon, dass Texturen auf den VRam geladen werden und wenn dieser Speicher nicht allzu groß ist, es zu Fehlern führen wird?
Heutzutage gibts noch Rechner, die < 64 mb Video RAM haben!

Wenn so ein AVI Video 24 Frames/Sekunde hat
Habe ich nicht da jede Texture (frame) nach gebrauch wieder freigegeben wird.
Ahjo und mein Video hat 32 Frames in der Sekunde sonst sieht das nix aus ;)
Glaube mir ich habe 0% CPU auch wenn ich die neue Texture jedesmal neu einbinden muss (glBindTexture)

gruss

Nun, das hat nichts mit der CPU, sondern GPU Auslastung zu tun.
Weiters - so schätze ich mal - gibts bei dir höchstens 32 Texturewechsel / Sekunde.
Bei Spielen kann diese Zahl locker 4 bis 5 oder mehr Stellen annehmen!

EWeiss 14. Apr 2011 21:36

AW: Shape Wars - Version 1.0
 
Zitat:

Nun, das hat nichts mit der CPU, sondern GPU Auslastung zu tun.
Weiters - so schätze ich mal - gibts bei dir höchstens 32 Texturewechsel / Sekunde.
Bei Spielen kann diese Zahl locker 4 bis 5 oder mehr Stellen annehmen!

Korrekt will da nicht widersprechen.. :)

gruss

Edlmann 15. Apr 2011 12:33

AW: Shape Wars - Version 1.0
 
Zitat:

Zitat von EWeiss (Beitrag 1095178)
Wenn du die Texture an einer liste bindest so wie ich das mit meinem TextureLoader (Array of Texture) mache
spielt die performance keine rolle wenn es dir um geschwindigkeit geht da diese zur jeder zeit abrufbar sind.

Beim Textureloader von Sulako bist du nun mal gebunden und kannst nicht mal so einfach eine Texture unmerklich wechsel.
Warum willst du hier was vergleichen du gibst einfach die Texture im Array an und fertig.

Um Texturen einzuladen benötigst du keine CPU.. bzw .. hast keine CPU auslastung.
In meinem Plugin verwende ich (mit meinem Textureloader) eine AVI Datei wo jedes Frame
einzeln in eine Texture gewandelt wird und das in Realzeit.

CPU := CPU <> 0 ;)

PS:
Das AVI ist 24MB groß da kannst dir vorstellen wieviele Frames dort enthalten sind.
gruss

Naja, ich meinte das ganze so, dass ich all meine Gegner in einer einzigen Liste habe, und diese beim Rendern halt durchgehe. Und mit wenigen Texturwechseln muss ich diese Liste halt 5x durchgehen => Mehr CPU-Auslastung, mit vielen TexturWechseln nur einmal => Mehr GPU-Auslastung.

Zitat:

Zitat von Aphton (Beitrag 1095179)
Grundsätzlich sollte man Texturewechsel immer meiden. Dein Code sollte darauf ausgerichtet sein, dass er gleich mit einem Durchlauf alles ohne Texturwechsel zeichnen kann.
Dh. gruppiere einfach Entities mit der gleichen Texture ID ala~
Delphi-Quellcode:
TTextureEntities = record
  TextureID: DWord;
  Entities: Array of Pointer; // Pointer = Klasseninstanzen
end;

// oder noch besser

TTextureEntities = class(TList)
public
  property TextureID: DWord; // strg+shift+c
  procedure Render();
end;
{Items[] beinhaltet dann die Instanzen; per Add/Delete/... kann es nun verwaltet werden}
EDIT:
@EWeiss
Du weißt aber schon, dass Texturen auf den VRam geladen werden und wenn dieser Speicher nicht allzu groß ist, es zu Fehlern führen wird?
Heutzutage gibts noch Rechner, die < 64 mb Video RAM haben!

Wenn so ein AVI Video 24 Frames/Sekunde hat und eine Länge von etwa 1 Min und pro Frame etwa eine Auflösung von 640*480*3 (RGB; unkomprimiert 900kb; komprimiert ~ 80 kb [JPEG Komprimierung]), dann wären das etwa 80 * 24 * 60 ~ 112,5 mb.

Damit hättest du ein Problem!

Stimmt, ist mir auch schon eingefallen, dass man einfach verschiedene Listen machen kann...werd ich glaub ich einfach so machen, das dürfte das optimierteste sein ;)
Und die Klasse TList benutze ich ja jetzt schon, bloß halt eine lange Liste mit allen Gegnern, egal welcher Typ.

Zitat:

Zitat von BUG (Beitrag 1095183)
Zitat:

Zitat von Edlmann (Beitrag 1095097)
die auch schon etwas weiter gehen als das was man auf DGl lernt

Bist du sicher, dass du über die DGL-Wiki hinaus bist :stupid:

Aber Gruppieren sollte geht sicher in die richtige Richtung.
Wie wäre es mit unterschiedlichen Listen für die Gegner?

Sagen wir ich habe mir die DGL-Wiki komplett durchgelesen bzw sie komplett durchgearbeitet, und konnte mir dieses Frage nicht selbst beantworten.
Wie schon oben gesagt, es wird auf mehrere Listen hinauslaufen.

@Mleyen: Leider ja, doch ich finde den Fehler dabei auch nicht. Zur Textdarstellung benutze ich im Moment die Textsuite, was ja so ziemlich das beste ist, was es im Moment gibt. Aber ich überlege sowieso das ganze auf eine deutlich simplere (im Quelltext implementierte) Vektorfont umzustellen, dann dürfte dieses Problem Geschichte sein.

[Edit]
o_o da war ja noch eine ganze andere Seite mit Diskussionen zu dem Thema ^^
Aber ich denke mal zu dem Thema ist alles gesagt, es ging mir bei der Frage eig nur darum die Aufrufe von glBindTexture zu minimieren, das Laden geschieht ja nur einmal am Anfang (alles andere wäre ziemlich sinnlos ^^). Ich werds einfach auf mehrere Listen umstellen, sollte dann das Beste sein.
[/Edit]

Aphton 15. Apr 2011 13:25

AW: Shape Wars - Version 1.0
 
Kanns kaum abwarten :stupid:

Edlmann 15. Apr 2011 14:59

AW: Shape Wars - Version 1.0
 
Zitat:

Zitat von Aphton (Beitrag 1095371)
Kanns kaum abwarten :stupid:

Was jetzt genau? :D

Ach ja, ich werd übrigens bald (spätestens wenn ich nen neuen Gegner drinne habe) den Highscore zurücksetzen, da die Highscores von da aus älteren Versionen stammen und mit der aktuellen Version kaum noch schaffbar sind (sorry mleyen ;) )

Aphton 15. Apr 2011 15:00

AW: Shape Wars - Version 1.0
 
Dass die Partikel effizienter gezeichnet werden. Ich kanns mit Partikeln gar nicht spielen, deshalb schalte ich das immer ab!

Edlmann 15. Apr 2011 15:12

AW: Shape Wars - Version 1.0
 
Zitat:

Zitat von Aphton (Beitrag 1095397)
Dass die Partikel effizienter gezeichnet werden. Ich kanns mit Partikeln gar nicht spielen, deshalb schalte ich das immer ab!

Da muss ich dich leider enttäuschen, an den Partikeln habe ich schon so viel wie möglich gemacht...aber du kannst ja einfach in der Settings.ini die Partikelanzahl runtersetzen ;) so mit etwa 80 sieht es auch noch gut aus (300 ist normal).

Woran ich gerade schraube ist die Effizienz der Gegner ^^

Memnarch 15. Apr 2011 16:46

AW: Shape Wars - Version 1.0
 
@Edlmann: bloom effekt kennst du nicht?(oder hab ich mich falsch ausgedrückt?).
Wenn du auf deine Gegner/Effecte Bloom anwenden könntest, würden dieObjecte aussehen, als wenn sie aus Laserlicht wären. War bei GW:Evolved glaub ich auch, muss nochmal gucken.
War nen netter effect^^.

PS: Vllt könnte man anstatt x partikel. MAX partikel setzen. So das nur eine gewisse maxgrenze partikel sichtbar sein darf, ansonsten werden ältere aprupt entfernt. Und mit der MAxzahl kann man dann noch schön performance testen :twisted:

MFG
Memnarch


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:30 Uhr.
Seite 18 von 36   « Erste     8161718 192028     Letzte »    

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 by Thomas Breitkreuz