Ich hab wieder mal ein problem und konnte diesmal nichst per Suche im Forum hier dazu finden.
Ich habe eine kleine 3D Demo, bestehen aus einem Würfel mit Textur der sich dreht, in geschrieben. Das heißt es werden 6 texturierte Quads gerendert.
Bei meinem PC läuft dies mit ca 1500 FPS. System:
Athlon xp 1800
Radeon 9700 Pro
512 MB DDR Ram
Dann hatte ich es auf einem PC Probiert mit folgender Hardware:
Athlon 950
GF 4 MX 460
512 MB SD Ram
Das Problem ist. dass die FPS enorm auf nur noch ca. 90 eingebrochen sind. Was ja eigentlich nicht sein kann bei diesem mini Programm, da ja auch relativ neue 3D Games auf einer MX 460 funktionieren (Generals usw.)
Dann hatte ich es noch auf einem Rechner mit einer Riva TNT 2 M64 laufen und hatte nur noch 20FPS!!!!
Dabei konnte diese Karte auch spiele wie Black and White problemlos darstellen.
Meine Frage also: Was mache ich falsch?????????
Bei DX hab ich mal gehört gibt es eine art Exklusive Modus. Gibst das bei OGL auch und hilft mir dass???
Das die Geschwindigkeit normal ist sollen kann ja unmöhlich sein.
ok, das mit den 90 FPS habe ich gerade gelöst, denn VSync war an was natürlich enorm bremste.
Aber dass auf der TNT2 nur 20 FPS sind kann ich mir nicht mit VSyny erklären (soweit bremst die ja garnicht runter). Das kann ich auch leider derzeit nicht testen, da deis ein Schulrechner war und ich da erst morgen wieder drann komme.
Vielleicht könnt ihr mir bei diesm Problem weiter helfen.
prüfe mit glGetError(s?), ob OpenGl fehler meldet. Wenn ja, dann musst du nur noch herausfinden, an welcher stelle - solche Fehler bremsen immer massiv herunter, also probiere das erstmal aus.
Die Riva TNT 2 M64 war eine sehr reduzierte Karte und ich weiß noch aus eigener Erfahrung, dass die um einiges langsamer als eine normale TNT 2 und ich glaube sogar auch teilweise langsamer als die Voodoo Banshee war. Texturegrößen von über 256 gingen, waren aber extrem ruckelig. Selbst Q3 lief damit im Gegesatz zur Voodoo Banshee, die ja auch nicht wirklich Spitze war, nicht immer flüssig. Also die M64 kann man nicht als Maßstab benutzen.
Dann hatte ich es noch auf einem Rechner mit einer Riva TNT 2 M64 laufen und hatte nur noch 20FPS!!!! Dabei konnte diese Karte auch spiele wie Black and White problemlos darstellen.
Black and White auf einer Riva TNT 2 M64??? Problemlos mag ja sein, aber konnte man das dann noch spielen, oder war das mehr eine Diashow? Allerdings sind, selbst für eine Riva TNT 2, 20 FPS doch ein bisschen wenig...
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Vielleicht liegts einfach ein ein paar Sachen, die Standardmäßig aktiviert sind, zB irgendwelche Extensions. Außerdem könnte es, wie Lars schon angedeutet hat, an der Texturgröße liegen.
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Sa Nov 13, 2004 11:00 Beiträge: 229 Wohnort: Steinhude
Zitat:
Black and White auf einer Riva TNT 2 M64??? Problemlos mag ja sein, aber konnte man das dann noch spielen, oder war das mehr eine Diashow? Wink
also ich konnte auf meinem alten p3 600mhz mit Riva TNT2 M64 Black&White durchaus noch leicht ruckelnd, wengistens anfangs im Spiel, irgendwann wurde dass dann doch etwas stärker.[/quote]
ok danke, für die antworten.
Das eine Problem hab ich ja wie schon gesagt mit Vsync abschalten schon gelöst. Jedoch läuft es auf den Schulrechner immernoch recht langsam. Ich habe mal bei mir im Taskmanager die Systemnutzung angesehen und bemerkt, dass mein kleines Programm, mit einer 4kb Tetxur bereits 8MB Speicher benötig!?!?!?
Kann das damit etwas zu tun haben oder ist das normal?
Ich hab noch ein zweites Prog das mit einer großen Textur arbeitet die 1MB groß ist (Ein Planet). Dieses benötigt ca 70MB Ram und startet auf den Schulrechner nichteinmal .
Ach ja, das mit glgeterrors hab ich probiert, hab aber nichts gefunden.
1.Texturen sind im Normalfall im Speicher der Grafikkarte -> verbrauchen überhaupt keinen Arbeitsspeicher. Ansonsten kann es durchaus vorkommen, das Texturen viel Platz wegnehmen, da ja meistens auch Mipmaps gespeichert werden.
_________________ Bevor du definierst, was etwas ist, versichere dich seiner Existenz.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hmmmm...Der speicherplatz kommt vielleicht von Klassen die du erzeugst und die z.B. riesige Felder beinhalten. 70MB entsprechen z.B einem 32Bit Bitmap mit 17920 Pixel (256*70).
@ Lossy: Die Instanzen in deinem Texturloader beinhalten doch auch die Texturdaten oder? Die liegen dann doch auch im RAM oder? Die müssten also immer im RAM liegen (und u.U. auch auf der GraKa), oder?
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Sa Nov 13, 2004 11:00 Beiträge: 229 Wohnort: Steinhude
Zitat:
1.Texturen sind im Normalfall im Speicher der Grafikkarte -> verbrauchen überhaupt keinen Arbeitsspeicher. Ansonsten kann es durchaus vorkommen, das Texturen viel Platz wegnehmen, da ja meistens auch Mipmaps gespeichert werden.
verbrauchen denn mipmaps so viel Speicher? vonner größe her müsste das mit mipmaps ja ~dem 1,3-fachen des orginalspeicherverbrauchs beötigen, da würde ich ja meinen dass das im regelfall eher kaum auffällt.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
@Flash: Nop. Daran habe ich natürlich auch gedacht. Das Normalverhalten ist so, dass nach dem Generieren die Texturdaten wieder frei gegeben werden. Aber man kann es natürlich auch einstellen, dass man sie nicht löschen möchte. Bei der glBMP liegen die Daten immer im Speicher.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Noch was zum Speicherverbrauch. Eine leere Delphianwendung benutzt schon mal eben 2,5 MB Speicher. Zu mindest bei mir. Also 8MB ist da durchaus noch vollkommen legitim. Je nachdem was du tust kann es auch sein, dass Windows für dich Speicher mit anlegt. Wenn ich in meinem einen Programm einen Windows Öffnendialog aufmache, dann springt der Speicherverbrauch von 5 auf 10 MB und die Threadanzahl von 1 auf 6 hoch. Wenn ich zusätzlich noch ein OpenGL Fenster aufmache, was noch diverse anderen Sachen beinhält, dann verbraucht es mal eben 18 MB. Aber 70 MB. Finde ich ein wenig viel. Ich weiß ja auch nicht genau was du da noch machst.
Zu deinem Geschwindigkeitsproblem können wir dir sonst nicht weiter helfen außer du zeigst uns mal ein bisschen Code. Ich tippe nämlich mal darauf, dass du beim Rendern etwas gemacht hast worauf die M64 ein wenig empfindlicher reagiert als die großen Karten.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also so sieht das eigentlich recht okay aus. Das einzige was man beim Rendern nch anders machen könnte ist das glBegin und glEnd. Wenn du dich dabei auf ein glBegin am Anfang und auf ein glEnd am Ende beschränkst hast du ein ganz klein wenig overhead entfernt. Aber der ist definitiv sehr gerin bei 6 Flächen.
Etwas was ich vielleicht auch anders gemacht hätte sind die Timer. Du arbeitest ja auch mit dem Idle und die Timer sind ja lediglich auch nur Windowsmessages. Evtl könnte es sein, dass die auf dem M64 Rechner irgendwie dazwischenfunken und dafür sorgen, dass das Idle nicht häufig genug aufgerufen wird. Aber wenn ich ehrlich bin glaube ich das nicht wirklich.
Anderfalls ist es in der Tat so, dass die M64 langsam ist.
Wie groß ist eigentlich das Fenster? Evtl ist es ja zu groß für die Karte und es ist nur so langsam, weil die Füllrate das Nadelöhr darstellt. Aber auch das kann ich nicht ganz so glaube weil ich selber lang genug eine TNT2 hatte. Aber halt eine richtige.
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.