Wie zeichnet man ein Qt5-Anwendungsfenster mit minimalem bis null CPU-Aufwand unter Windows oder Linux auf?

510
iksemyonov

Ich schreibe eine Echtzeit-Volume-Rendering-Anwendung, die ausschließlich auf der CPU ausgeführt wird. Es ist recht schnell, aber je mehr CPU-Leistung desto besser für die Interaktivität. Im Grunde möchte ich CPU-Ressourcen maximal auslasten. Ich muss eine Demo der Anwendung aufnehmen. In der Vergangenheit habe ich OBS studio unter Linux verwendet, um eine Komplettlösung für ein RTS-Spiel aufzunehmen, und ich erinnere mich daran, dass definitiv ein gewisser CPU-Aufwand bestand. Dies ist für meine Volume-Renderer-Demo nicht akzeptabel.

Das heißt, die Frage ist:

Kann eine reine Qt5-Anwendung, die bei einer Desktop-Maschine mit einer NVIDIA GTX 1060 6-Gb-GPU eine reine Qt5-Anwendung aufzeichnet, nicht unter Verwendung der genannten GPU als Encoder mit 0 CPU-Overhead ausgegeben werden? Muss ich die Quelle ändern, um eine Bibliothek zu nutzen, die es mir erlaubt, den Framebuffer zu kopieren und im laufenden Betrieb nur mit der GPU zu kodieren?

Bearbeiten:

Um es klarer zu machen. In erster Linie bin ich an einer Anwendung interessiert, mit der ich das Fenster meines Programms aufzeichnen kann, nicht in einer Bibliothek, in der ich mein eigenes Projekt als Programmierer verwenden kann (dh über seine API). Wenn es jedoch einen Weg gibt, das Problem auf letzterem Weg zu lösen, wird dies auch in Ordnung sein.

1
Ich glaube, das sollte auf stackoverflow sein, da es sich im Wesentlichen um eine Programmierfrage handelt. djsmiley2k vor 7 Jahren 0
@ djsmiley2k In erster Linie interessiere ich mich für eigenständige Aufnahmeanwendungen, die CPU-Overhead vermeiden, beispielsweise solche, die auf NVIDIA ShadowPlay basieren. iksemyonov vor 7 Jahren 0
Ok, ich habe meine Flagge nach den Änderungen zurückgezogen. djsmiley2k vor 7 Jahren 0
@ djsmiley2k TY für das Korrekturlesen! iksemyonov vor 7 Jahren 0
Wenn nicht die gesamte Aufzeichnung in den Speicher passt, sehe ich nicht, wie Sie den für den Zugriff auf das Dateisystem erforderlichen CPU-Aufwand vollständig vermeiden können. Es gibt beschleunigte Blits aus dem Bildpufferspeicher in den Hauptspeicher, die keine CPU verwenden (obwohl sie den Bus verwenden), aber die CPU muss das Speichern durchführen. Und ich kenne keine vorgefertigten Anwendungen, die dies tun. dirkt vor 7 Jahren 0
@dirkt was ist mit dem "shadowplay" von NVIDIA, das CPU-Overhead entfernen soll? iksemyonov vor 7 Jahren 0
Ich bezweifle nicht, dass Shadowplay einige CPU-Overheads entfernt, aber ich wäre wirklich überrascht, wenn es das Betriebssystem umgeht und plötzlich auf Festplatten von der GPU zugreift. Ich glaube das, wenn ich das sehe (Sie können es mir gerne zeigen), weil es so viele Probleme gibt (Kohärenz), und ich würde auch sofort alle NVidida-Karten entfernen, die ich von meinen Maschinen finde. Das ist eine riesige Sicherheitslücke. dirkt vor 7 Jahren 0
Video-Capture-Karten - dasselbe (PCI-E auf Festplatte)? iksemyonov vor 7 Jahren 0

0 Antworten auf die Frage