Welche Daten werden von einer CPU an die GPU übergeben?

379
Time4Tea

Ich frage mich, welche Art von Daten von einer CPU an die GPU weitergegeben werden, wenn beschleunigte 3D-Grafiken verwendet werden (z. B. für ein typisches modernes 3D-Videospiel).

Ich bin mir der bestehenden Frage hier bewusst:

Der Unterschied zwischen GPU und CPU

Das erklärt die Unterschiede zwischen einer CPU und einer GPU. Es ist jedoch ziemlich hoch und ich suche nach detaillierteren Details.

Senden Sie beispielsweise ein Szenendiagramm oder Koordinaten von Scheitelpunkten von 3D-Grundelementen? Welche Berechnungen werden von der CPU an den Daten durchgeführt, bevor diese Übergabe erfolgt?

0
Ich sehe, wie man dies als zu weitreichend betrachten kann, aber eigentlich zu wenig als unverständlich. Ja, es würde ungefähr 10-20 Absätze erfordern. Kleines Buch, aber nicht verrückt. jdwolf vor 6 Jahren 0
@DavidPostill Ich weiß, die Frage ist etwas breit gefasst, hätte aber nicht gedacht, dass sie markiert werden würde. Ich kann es in 2-3 separate Fragen aufteilen, wenn das vorzuziehen ist? Time4Tea vor 6 Jahren 0
Es wäre schön zu wissen, warum jemand abgewiesen hat. Ich weiß, dass es ziemlich breit ist, aber ist es eine schlechte Frage? Time4Tea vor 6 Jahren 0
@ Time4Tea Du kannst es versuchen ... DavidPostill vor 6 Jahren 0
Frage wurde bearbeitet, um den Umfang zu reduzieren. Time4Tea vor 6 Jahren 0
@ Time4Tea In die richtige Richtung bewegen. Wiedereröffnet DavidPostill vor 6 Jahren 0
"Welche Berechnungen werden von der CPU an den Daten durchgeführt, bevor diese Übergabe erfolgt?" - Dies liegt beim Programmierer. DX12 oder Vulkan verfügt über Funktionen, die einen von der Hardware berechneten Wert zurückgeben. Was berechnet wird, liegt beim Programmierer. Die CPU in den meisten dieser Anwendungen bleibt den Nicht-Fließkomma-Berechnungen überlassen. Ramhound vor 6 Jahren 0
@Ramhound danke für Ihre Eingabe und ich nehme an, dass viele dieser Details dem Anwendungsprogrammierer vorbehalten sind (ebenso wie nicht-grafische Programmierung für die CPU). Ist es richtig zu sagen, dass im Beispiel eines 3D-Spiels ein Teil der Codierung der Game-Engine den Datenworkflow für das Grafik-Rendering definiert und wie genau die GPU verwendet wird? Gibt es allgemein anerkannte branchenübliche Praktiken, an denen die Datenübergabe stattfindet, oder ein weit verbreiteter Motor, der als Beispiel betrachtet werden könnte? Time4Tea vor 6 Jahren 0
Derzeit gibt es in der Tat rund 4 große Spiele-Engines. Je nachdem, ob Sie mit DX12 oder Vulkan zu tun haben, bestimmen Sie, wie etwas auf dem Bildschirm gezeichnet wird. Abgesehen davon, wie Sie das, was Sie auf dem Bildschirm gezeichnet haben, manipulieren, liegt es vollständig beim Programmierer. Ich bin ehrlich gesagt nicht ganz sicher, wonach Sie suchen. Es scheint seltsam, dass Sie nichts über Unity oder Unity wissen würden. Ramhound vor 6 Jahren 0
@Ramhound sicher, ich habe von diesen Motoren gehört, obwohl ich nicht viel darüber weiß, was sie unter der Haube tun. Die Sache ist, dass die CPU und die GPU separate Speicherbereiche haben, also gehe ich davon aus (was falsch sein kann), dass irgendwann die 'Szenen- / Geometriedaten' vom CPU-RAM zum GPU-RAM übertragen werden müssen. Ich bin neugierig, in welcher Phase diese Übergabe normalerweise stattfindet, obwohl ich verstehe, dass sie sich je nach Game-Engine unterscheiden kann. Vielleicht sollte ich stattdessen fragen, wie dies für eine bestimmte Beispielmaschine (z. B. Unreal) durchgeführt wird. Time4Tea vor 6 Jahren 0
Wenn Sie DX12- oder Vulkan-Funktionen aufrufen, legen Sie alles direkt in den Speicher der GPU. Die CPU wird Dinge berechnen, die die GPU nicht ohne weiteres berechnen kann. Es klingt, als müssten Sie mehr darüber erfahren, wie DX12, Vulkan und Unity / Unreal tatsächlich funktionieren. Ihre Frage ist nicht an dem Punkt, an dem sie leicht und ohne komplettes Tutorial (was sehr umfangreich ist) beantwortet werden kann und auf einer Q & A-Website wie Superuser keine gute Antwort ist. Ramhound vor 6 Jahren 0
@ Ramhound ok, danke für deine Eingabe. Ja, vielleicht fehlt mir das Verständnis dafür, wie die 3D-Grafikverarbeitung (und das Zusammenspiel zwischen CPU / GPU) funktioniert. Vielleicht würde es mir helfen zu verstehen, wenn ich ein einführendes Online-Tutorial für OpenGL / Vulkan durchlaufen würde? Time4Tea vor 6 Jahren 0

0 Antworten auf die Frage