Nun habe ich bei der Ausführung bemerkt, dass wenn nicht überblendet wird (im Endeffekt also der zweite Block fehlt) die CPU-Auslastung bei etwa 10% liegt, die GPU Auslastung bei 95%. Mit sieht es dagegen aber anders aus: CPU:85%, GPU 60%. Die Framerate sinkt von ca. 900FPS auf 120FPS. Wieso bremst die CPU die GPU aus (zumindest scheint dies so)? Nahezu genau so ist dies, wenn ich Multitexturing benutze. Dabei wäre es ja noch logisch, dass die CPU belastet wird, da der Alpha-Wert jedes mal neu in die zweite Textur (TglBitmap2D) geschrieben werden muss.
Ich hoffe jemand kann mir erklären, woran dies liegt.
Dabei wäre es ja noch logisch, dass die CPU belastet wird, da der Alpha-Wert jedes mal neu in die zweite Textur (TglBitmap2D) geschrieben werden muss.
MyTex2 ist kein TglBitmap2D sondern die ID des Texturobjektes im Speicher der Grafikkarte. Die gesamte Blending-Operation geschieht auf der Grafikkarte. Die CPU sagt der GPU nur was zu tun ist und muss nach jedem Frame warten bis die GPU fertig ist.
Die Auslastungsangaben sind wahrscheinlich nicht wirklich verlässlich, weil du weder CPU noch GPU wirklich was zu arbeiten gibst. Diese langweilen sich eigentlich nur
Du hast recht. Der gepostete Code ist nicht mit TglBitmap2D. Aber der mit multitexturing, da ich die Texturen so einfacher animieren könnte (Berechnung eines Teils der Texturen auf der CPU). Das tut aber auch nichts zur Sache. Ich frage deshalb, weil ich nun Schiss habe, dass das die CPU so belastet wird, dass ich keine Rechenzeit mehr für das berechnen z.B. einer Alpha-Map habe. Und Multithreading möchte ich mir diesmal ersparen.
Zweitens wundert mich, dass ich beim Überblenden nur noch 120FPS bekomme. Auf der CPU schaffe ich mit vier Kernen bei gleicher Auflösung 33 FPS und wenn ich das ganze mit der opBitmap realisieren würde könnte ich sogar noch 30-40% Rechenzeit pro Frame sparen (habe ich einzeln schon ausgetestet aber nicht in diesem Kontext - hängt auch von der Belastung des GUI-Threads ab). Dies würde etwa 45-55 FPS machen.
Zeig vielleicht mal den gesamten Code (als Dateianhang oder so). Vielleicht machst du irgend etwas was man nicht tun sollte, aber da gibt es 1000 Sachen. Ferndiagnose ist da etwas schwer ohne Grundlage.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich möchte da mal auf diesen Artikel in unserem Wiki verweisen, der auch in dem angepinnten Thread erwähnt ist. Vielleicht findest du da ja was hilfreiches.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
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.