Ist es möglich, ein Spiel zu schreiben, für das keine GPU erforderlich ist?


8

Ich weiß bereits, dass viele Computer heute eine GPU haben, die DirectX und OpenGL unterstützt. Aber was ist mit Computern, die das nicht tun? Kann ich ein einfaches 2D-Spiel schreiben, das nicht auf der GPU basiert, sodass es auch auf älteren Computern funktioniert?

Gibt es eine plattformübergreifende C- oder C ++ - Spielbibliothek, mit der ich dies tun kann? Im Idealfall kann ich mit einer solchen Bibliothek die Hardwarebeschleunigung mit sehr wenigen Codezeilen umschalten.


Sie können es sogar in 3D machen, das erste unwirkliche Turnier lief auf der CPU.
Peter Ølsted

Wie alt denkst du? Fast alles, was noch läuft, unterstützt eine Variante von OpenGL oder DirectX.
3Dave

@DavidLively Ich weiß, dass ich vielleicht ein bisschen "alt" klinge, aber es gibt immer noch Benutzer mit alter Harware, einschließlich der Verwendung des Videospeichers des Motherboards (sie unterstützen weder DirectX noch OpenGL, zumindest für die alten). Außerdem ist es nach den Antworten, die ich erhalten habe, nicht schwierig, die Hardwarebeschleunigung umzuschalten, daher ist es sowieso eine große Sache.
user999687

Hardwarebeschleunigte GPUs der einen oder anderen Art sind seit langem Standard. Planen Sie auch Windows 98, Computer mit CPUs unter 200 MHz oder 64 MB RAM?

Antworten:


6

Natürlich können Sie SDL verwenden, und ich glaube, es macht standardmäßig alles auf der CPU. Sie können tatsächlich eine ziemlich gute Leistung erzielen, wenn Sie Ihren Code gut verwalten.


Vielen Dank! SDL ist eine der Spielbibliotheken, die ich auswählen werde (zusammen mit Allegro).
user999687

2

Glaubst du, Pong hat eine GPU benutzt?

Glauben Sie, dass die Flash-Spiele, die Sie ständig im Internet spielen, eine GPU verwenden?

(Erst in den letzten Wochen können Flash-Spiele endlich für die GPU-Unterstützung entwickelt werden. Und Flash gibt es schon seit mehr als einem Jahrzehnt.)

Natürlich ist es möglich. Ich hatte ein Jahrzehnt lang Spiele gespielt, bevor es überhaupt eine beschleunigte Grafikkarte für den Verbrauchermarkt gab, geschweige denn ganze Turing-Komplettprozessoren für Grafiken (und insbesondere für Spielegrafiken).


Danke für die Antwort. Ich war nur verwirrt, da ich jetzt nur noch DirectX und OpenGL oder andere Spielbibliotheken sehen kann, die diese beiden unterstützen (zumindest in Bezug auf C / C ++).
user999687

Diese Antwort ist unaufrichtig - Pong hatte keine GPU, aber auch keine CPU. Sehr frühe Spiele verwendeten TTL-Chips und nichts, was wir heute als programmierbaren Computer erkennen würden.

@ JoeWreschnig (a) CPU! = Mikroprozessor. Nehmen Sie sich Zeit, um einige der älteren Literatur zu lesen, und Sie werden schnell feststellen, dass die Verwendung von TTL in einer CPU nicht auf magische Weise verhindert hat, dass es sich um eine CPU handelt. Eine CPU ist eine Rolle in der Computerarchitektur, in der TTL zu dieser Zeit die grundlegende Technologie war. (b) Sie müssen die Definition von unaufrichtig erneut lesen , da klar ist, dass Sie nicht wissen, wie Sie sie verwenden sollen.
Ingenieur

@Nick: Außer dass es keine in TTL implementierte CPU war, wurde das Spiel in TTL implementiert. Es war kein programmierbarer Computer, daher gab es keine CPU.

@ JoeWreschnig Das war eine CPU. "Die Zentraleinheit (CPU) ist der Teil eines Computersystems, der die Anweisungen eines Computerprogramms ausführt, um die grundlegenden arithmetischen, logischen und Eingabe- / Ausgabeoperationen des Systems auszuführen." Das ist die Definition. Sie gibt es seit den 40ern. Ihre Ansichten darüber, was eine CPU ausmacht, sind ungenau. Nirgendwo finden Sie eine Definition, die Programmierbarkeit erfordert (dh softwarecodierte Anweisungen).
Ingenieur

2

Vergessen Sie nicht, dass Videospiele der ersten Generation für ein Oszilloskop geschrieben wurden! Und mit Videospielen der ersten Generation meine ich Pong. Eine GPU ist ein Mathematikprozessor, was auch eine CPU ist. Es ist nur spezialisierter.


1

Es ist absolut möglich: Die ersten Computerspiele gab es vor GPUs - wie Sie hervorheben, handelt es sich um Hardware, die zur Beschleunigung der 3D-Mathematik entwickelt wurde. Alles, was auf der GPU ausgeführt wird, kann auch auf der CPU ausgeführt werden, allerdings normalerweise mit einer langsameren Gesamtgeschwindigkeit. (In der ersten Version von Quake wurde beispielsweise nur Software-Rendering verwendet [1] )

Mesa3D ist eine OpenGL-Implementierung, die behauptet, das Rendern von Vollsoftware zu unterstützen. (Ich habe es jedoch nur als Referenzimplementierung verwendet).


"Normalerweise langsamer" ist sehr subjektiv und im Allgemeinen ziemlich schlecht im Verständnis der Unterschiede. Ein einfacher Überblick ist, dass Operationen, die gut zum SIMD-Paradigma passen und die bedingte Logik minimieren, eine gute Wahl für die GPU sind. Dies umfasst Aufgaben vom Typ Massenzahl-Crunching wie das Schieben von Rohpixeln oder die Vertex-Verarbeitung, während CPUs das allgemeine Arbeitspferd und der Delegator sind. Bei der neuesten Forschung zu Echtzeit-Raycasting und globaler Beleuchtung werden Teile der verwendeten Algorithmen sehr sorgfältig delegiert, um die optimale Leistung von CPU und GPU zu erzielen.
Ingenieur

2
Ich möchte lieber nicht die Semantik von "normalerweise" und "insgesamt" diskutieren. Ich hatte gehofft, dass es eine vage Behauptung war: Angesichts der Gemeinkosten für den Versand von Jobs an die GPU ist es im Allgemeinen ein Gewinn, Tonnen von parallelen Operationen durchzuführen, obwohl es einige Fälle geben kann, in denen dies nicht der Fall ist.
Clayton Hughes

Es ist fair zu sagen, dass es so viele Fälle gibt, in denen Ihre ursprüngliche Aussage nicht wahr ist, wie in denen sie ist. Und wenn Sie keine Lösung haben, die speziell für diese parallelen Operationen geeignet ist, nein, sie wird nicht schneller sein, sie kann sogar viel langsamer sein. Vielleicht ist es besser, die Fakten genauer darzustellen, als zu versuchen, eine "Debatte" zu vermeiden. Versuchen wir, niemanden irrezuführen.
Ingenieur

1

Wenn es sich nur um 2D-Spiele handelt, empfehlen wir Ihnen, entweder flash 10oder zu verwenden SDL. Wenn Sie jedoch der Meinung sind, dass Ihr Spiel 3D-Elemente und Rendering enthält, können Sie diese auch verwenden Irrlicht verwenden . Grundsätzlich handelt es sich um eine plattformübergreifende Open-Source-3D-Engine mit Unterstützung für Hardware- und Software-Rendering:

aus dem Wiki:

Irrlicht unterstützt 3D-Rendering über OpenGL, DirectX 8 und 9, OpenGL ES und interne Software-Rasterizer.


-1

Während das, was Sie fragen, möglich ist, ist es erwähnenswert, dass es normalerweise praktisch keinen Vorteil hat, die 3D-Beschleunigung zu verwerfen. Alle modernen PCs verfügen über eine integrierte 3D-Beschleunigung. Die wenigen alten Maschinen ohne diese Funktion stellen einen extrem kleinen Spielemarkt dar, und Sie hätten wahrscheinlich auch andere Kompatibilitätsprobleme mit diesen.

Ich befürchte, dass Sie diese Frage aus dem falschen Grund stellen.


Ich war nur auf der Suche nach einer Möglichkeit, ein Spiel zu entwickeln, das für alle verfügbar ist, selbst für Benutzer mit älterer Hardware. Außerdem habe ich, wie gesagt, eine plattformübergreifende Spielbibliothek angefordert, sodass ich offensichtlich einen gewissen Kompatibilitätsverlust (für bestimmte Hardwareplattformen) erwartet habe, aber zumindest musste ich weniger programmieren und hatte immer noch ein Produkt für einen großen Teil der Benutzer . Netter Punkt, ich möchte ein Spiel haben, das (fast) jedem zur Verfügung steht. Aber da ich noch ein Neuling bin und nicht für mehrere Plattformen programmieren werde, denke ich, dass dies der richtige Weg ist - zumindest für den Moment.
user999687

Als Neuling sollten Sie zunächst eine Bibliothek erwerben, die einfach zu bedienen ist. Ich sage nicht, dass dies keine nicht beschleunigte sein kann, aber das Kriterium wird die Suche nicht erleichtern.
aaaaaaaaaaa
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.