Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

1

11.12.2005, 18:37

Alles flackert & andere Probleme

Hallo zusammen!

Also erstmal ein Lob an Scherfgen für dieses gelungene Buch! Ich schreibe derzeit meine eigene Engine (angelehnt an die TriBase) [OmegaEngine^^]. Nun habe ich gerade den Modellkonverter fertiggestellt, welchen ich übrigens NICHT von der Tribase abgeschaut habe. Zum Modellkonverter habe ich jetzt noch einen ModelViewer geschrieben, welcher einfach nur die konvertierten Modelle rendert.

Nun habe ich einige Probleme bzw Fragen mit/zu selbigen:
1) Im Debug-Modus läuft alles SUPER! Alles einwandfrei und perfekt, aber im Release-Modus flackert das gesamte Bild! Kurz wird immer wieder ein Frame rosa oder blau oder ähnliches! Es flackert halt... Aber nur wenn man die Kameraposition verändert! Was könnte das sein? Bzw, wie kann ich das lösen?
Was vielleicht noch zu sagen wäre: Es flackert nur dort wo etwas in den Bildbuffer geschrieben wird --> also das gesamte Modell!

2) Die FRAMERATE! Also ich habe einen Athlon64 3700+, 1024 400MHz Ram und ATI ReadonX800XT und bei ca. 14000 Vertizes und 41000 Indizes habe ich eine Framerate von 65fps (!!). Nun kam mir das etwas wenig vor, und ich hab das SELBE Programm auf meinem 2. PC laufen lassen [AthlonXP1800+, 1024 266Mhz Ram, GeForceTi4600] und dort hatte ich sage und schreibe 450fps!! Wie kann das sein?

3) Ladezeit: Immer noch das gleiche Modell wie in 2) benötigt glatte 10 Sekunden zum laden! Gut, nicht nur das Modell allein, aber bis es zum ersten mal angezeigt wird! Ist das normal? [Datei ist 690KB groß (ogm-Datei, ähnlicher Aufbau wie tbm)]

4) Für skeletale Animation muss ich ja sicherlich ein eigenes Animationssystem schreiben! Genügen da die Daten von einer 3ds Datei oder muss ich ein anderes Ausgangsdateiformat wählen? Ist es da auch vorteilhaft in ein eigenes zu konvertieren? Direkt verwenden?

Ich weiß das ist viel auf einmal, ich wäre aber für eine Antwort sehr dankbar

MfG
Black-Panther


[edit:
Hätt ich fast vergessen!
5) Welche Möglichkeiten gibt es die Performance von meiner Engine zu erhöhen? Wie kann man allgemein die Framerate verbessern? Und wieso ist bei mir fast kein Unterschied in Sachen Geschwindigkeit zwischen Debug und Release Version? Oder betrifft dieser Unterschied nur die reine CPU-Rechenleistung und nicht diese der GPU!?
]

2

12.12.2005, 13:28

Hört sich für mich nach einem Treiberproblem nicht mit einem DirectXproblem... Hast du DX mal auf Debug gestellt mit ganz viel Ausgabe? vllt. gibt er ja was aus... Wann und wie löscht du den Backbuffer?

mfg Markus

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

3

12.12.2005, 14:22

1) Da hast du bestimmt irgendwo in dem Teil, der in der Release Version kompiliert wird einen Fehler gemacht :D

2) Ich glaube (bin mir aber nicht sicher) dass in manchen Systemen die Framerate begrenzt wird. Wuerde heissen, du kannst noch jede Menge Sachen rendern, bevor er von 65 fps runter geht. Ich hatte das auch mal auf meinem Laptop, und da wars definitiv so (kann sein dass es sogar auch 65 fps warn)

3) Kommt hin, so wenig sind 14.000 Vertizes nicht. Haengt natuerlich davon ab, wie genau du das Modell laedst und vorbereitest zum Rendern, vielleicht kann man da ja noch optimieren.

4) 3ds speichert einmal das Modell, und jede Animation dann in einer weiteren 3ds Datei. Es ist moeglich, dir ein Format zu schreiben, was alle 3ds Dateien, die zusammengehoeren auch in einer Datei zusammenfasst.

5) Da will ich nix falsches sagen, warte mal die Kommentare unserer Profis ab^^

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

4

12.12.2005, 17:25

Danke für die Antwort!

1) Ich glaub nicht, dass ich irgendwo einen Fehler in der Release gemacht habe, weil beinah kein Unterschied zwischen der Debug und Release Version besteht... nur einige Logausgaben mehr, sonst nix! Im ModelViewer selbst ist überhaupt kein Unterscheid einprogrammiert.
Ich glaube auch nicht, dass es am Treiber liegt, weil ich habe es inzwischen auf 4 PCs probiert, überall das gleiche!
Das mit der DX ausgabe muss ich noch probiern

2) hmm... kann sein, dass diese Begrenzung nur für gewisse Modell gilt? Weil bei einem einfachen Würfel als Modell komm ich auf 10.000 fps!

3)

Zitat

3) Kommt hin, so wenig sind 14.000 Vertizes nicht. Haengt natuerlich davon ab, wie genau du das Modell laedst und vorbereitest zum Rendern, vielleicht kann man da ja noch optimieren.

Wie soll ich ein Modell vorbereiten? Laden optimieren? [von Optimierung hab ich nicht seehr viel Ahnung...]

4) Das ist doch extrem umständlich und speicherintensiv? Gibt es da nicht eine bessere Methode? ZB ein anderes Modellformat? Hab mal was von md3 gehört... was ist damit? bzw was speichert das?

5) ok ich warte ^^

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

5

12.12.2005, 18:57

Zitat von »"Black-Panther"«

Danke für die Antwort!

1) Ich glaub nicht, dass ich irgendwo einen Fehler in der Release gemacht habe, weil beinah kein Unterschied zwischen der Debug und Release Version besteht... nur einige Logausgaben mehr, sonst nix! Im ModelViewer selbst ist überhaupt kein Unterscheid einprogrammiert.
Ich glaube auch nicht, dass es am Treiber liegt, weil ich habe es inzwischen auf 4 PCs probiert, überall das gleiche!
Das mit der DX ausgabe muss ich noch probiern

Dann musst du logischerweise was falsch gemacht haben.

Zitat von »"Black-Panther"«


2) hmm... kann sein, dass diese Begrenzung nur für gewisse Modell gilt? Weil bei einem einfachen Würfel als Modell komm ich auf 10.000 fps!

Hmm weiß nicht, bin mir wie gesagt nicht sicher. Hast du das Modell durch nen BSPTree oder so optimiert? Wenn nein würde das erklären warum es so langsam ist, aber es würde mich dann wundern, warum es auf dem andern Rechner schneller läuft... Auf meinem Laptop war es so, dass es ne fps obergrenze gab, die nie überschritten wurde.

Zitat von »"Black-Panther"«


3)

Zitat

3) Kommt hin, so wenig sind 14.000 Vertizes nicht. Haengt natuerlich davon ab, wie genau du das Modell laedst und vorbereitest zum Rendern, vielleicht kann man da ja noch optimieren.

Wie soll ich ein Modell vorbereiten? Laden optimieren? [von Optimierung hab ich nicht seehr viel Ahnung...]

Naja viel kann man bei einem Modell egtl nicht falsch machen. Hast du evtl noch andere Daten in der Datei, die geladen aber nicht verwendet werden? (zB Lichter, Animation) Oder lädst du das Modell versehentlich mehr als einmal?

Zitat von »"Black-Panther"«


4) Das ist doch extrem umständlich und speicherintensiv? Gibt es da nicht eine bessere Methode? ZB ein anderes Modellformat? Hab mal was von md3 gehört... was ist damit? bzw was speichert das?

Naja md3 wirds genauso machen denke ich. Rechenintensiv ist ja nur das Umwandeln von den 3ds Dateien zum Zielformat. Wenn das dann gut strukturiert ist hast du doch n ganz normals Modellformat, das das Modell und verschiedene Animationen, die du abspielen kannst, enthält.

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

6

12.12.2005, 21:41

Danke nochmals für die schnelle Antwort

1) Kann das besagte Problem mit der Berechnung der Normalvektoren zusammenhängen? Weil das war das letzte was ich verändert habe... (und ein paar Bugs rausgetan), bevor es begonnen hatte so zu flackern...

2) Ähhh.... BSPTree?? *schäm*

3) Nein, nein, lade nur was ich brauche... Animationen unterschütz mein Format derzeit noch nicht

4) ok, danke

5) Profis? ^^
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

7

12.12.2005, 21:50

1) Es geht bestimmt.. Ich hatte zB mal ein Flackern, weil irgendwo eine Division durch 0 stattgefunden hat.

2) BSPTree oder BinTree ist eine binäre Baumstruktur. Ein Baum ist entweder leer oder er hat einen Wert und einen rechten und linken Folgebaum. Sieht zB so aus:

Quellcode

1
2
3
4
5
6
7
        1
       / \
     2    3
    /     / \
   4     5   6
        /
       7


Damit teilst du dann dein Model so auf, dass immer 1 Teil irgendwo unten im Baum ist, du also mehrere Teilmodelle hast. Du überprüfst nun, ob zB 1 im Sichtbereich liegt. Wenn ja prüfst du für 2 und 3. Liegt 2 nicht im Sichtbereich, liegt 4 auch nicht im Sichtbereich. Liegt 3 im Sichtbereich, prüfst du für 5 und 6 usw... Bei der Spieleprogrammierung wäre der Baum allerdings ausbalanciert, also symmetrisch. Es gibt auch Quadtree und Octrees, die 4 oder 8 Teilbäume haben.

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

8

12.12.2005, 22:01

JUHUUU!

1) Habe das Problem gelöst... Hab grade ein bisschen rumprobiert, und da ist mir aufgefallen, dass ich vergessen hatte der Lichtquelle eine Specular Farbe zuzuweisen! Trotzdem wurderts mich wiesos in der DEBUG funktionierte *grübel*

2) Danke für die Erklärung... das muss ich mir mal genauer anschauen... Hab mir schon gedacht, dass es doof ist, alles zu rendern, wenn man nur die Hälfte sieht! Danke jedenfalls!

5)... Nur noch eine Frage übrig... ^^
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

12.12.2005, 22:10

Das hängt damit zusammen das im debugmodus alle "standard" vars automatisch auf 0 gesetzt werden.

Alsooo da sich keiner an die 5. rantraut mache ich mal den Anfang. Als erste ist es immer schlecht von Profis zu reden, denn gerade in der Programmierung gibt es sehr viele Teilgebiete, so dass einer allein nicht alles beherrschen kann(viell. mal behandelt aber aus dem Handgelenk nein). Die Sache mit Debug und Release hängt mit der Tatsache zusammen, dass im Debugmodus viel mehr Sachen neben her laufen. Es gibt auch für die GraKa einen Debugmodus und wenn man dein reinhaut tuts auch weh. Von wegen Performance; ist natürlich ein heikeles Thema aber eine sauber programmierte Engine ist schonmal viel wert. Auch sollte man sparsam mit zuvielen Klassen sein, weil man schnell in einen Overload kommt von wegen Menge.
:meinung:
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

10

13.12.2005, 13:05

Hmm... nicht viele Klassen... Meinst du damit Klasseninstanzen oder Klassen an und für sich!?

Ich hab zum Beispiel, anders als in der TriBase, eine Klasse als Speicherverwaltung programmiert... Ist das schlecht? Oder machts das nicht aus? Ich finde es einfach übersichtlicher und performanter, weil ich dann bei MemReAlloc nicht die ganze Liste der bereits reservierten Speicher durchgehen muss...
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige