SoDaTierchen
Commodore
- Dabei seit
- Feb. 2011
- Beiträge
- 4.346
Hallo CB-Community,
da ich mich mit der Spielentwicklung vertraut machen möchte, habe ich mir gedacht, ich programmiere mal selbst ein kleines Spiel. Es geht hier um den Lerneffekt, nicht um die Qualität, also wird das ein rein privates Projekt.
Plattform ist C++, Grafikschnittstelle OpenGL. Programmiert wird von Pike, jedoch unter Windows.
So, mein eigentliches Problem:
Ich wollte als ersten Anfang ein sichtbares Bild erzeugen. Das ist schon ein gutes Stück Code, da OpenGL ja nativ keine Windows-Fenster ansprechen kann. Das klappt aber, dank Tutorials im Netz.
Zweiter Schritt war das Anzeigen eines Würfels. Würfel, weil ich den aus jeder Perspektive sehen könnte, selbst wenn ich mich mit x,y und z mal vermache.
Dritter Schritt war das Anzeigen von 80x80x80 Würfeln. Immerhin soll das mal eine große Welt werden. Doch hier tritt ein Problem auf: Es ruckelt wie Schwein. Die CPU geht hoch an die 25% Auslastung (keine Mehrkernoptimierung, ist also Volllast) und die Grafikkarte gurkt bei 20% rum -> Definitiv CPU-Limitiert. Dabei lasse ich die Würfel lediglich pro Frame in drei geschachtelten Schleifen erzeugen, also nichtmal wirklich berechnungen drumherum. Diese Schleife wird jedes Frame ausgeführt, ist also schon ein Batzen Arbeit, aber es sollte doch trotzdem nicht so ruckeln, oder?
Einfache Rechnung: Moderne Spiele schaffen es, 2Mrd Polygone gleichzeitig auf dem Bildschirm darzustellen und das bei 60 fps. Von mir aus auch nur Benchmark-Suiten, aber das Szenario ist nicht unrealistisch. Meine Würfel sind jetzt grob gerundet 500.000 Stück mit 6 Polygonen pro Würfel -> Also nur ein Zweitausendstel von dieser riesigen Welt. Und ich habe keine Berechnung wie Physik, bewegliche Objekte oder ähnliches drin. Nur diese Würfel anzeigen lassen und etwas entlang den x- und z- Koordinaten (horizontal) laufen.
Wie kriege ich es also hin, dass die Würfel alle angezeigt werden können, ohne dass es ruckelt wie die Pest? Wenn die Erklärung etwas aufwendiger wird, gebe ich mich auch mit Links zufrieden, aber ich bin scheinbar zu blöd, um im Netz darauf eine Antwort zu finden :/
liebe Grüße und schoneinmal Danke für die Antworten
SoDaTierchen
da ich mich mit der Spielentwicklung vertraut machen möchte, habe ich mir gedacht, ich programmiere mal selbst ein kleines Spiel. Es geht hier um den Lerneffekt, nicht um die Qualität, also wird das ein rein privates Projekt.
Plattform ist C++, Grafikschnittstelle OpenGL. Programmiert wird von Pike, jedoch unter Windows.
So, mein eigentliches Problem:
Ich wollte als ersten Anfang ein sichtbares Bild erzeugen. Das ist schon ein gutes Stück Code, da OpenGL ja nativ keine Windows-Fenster ansprechen kann. Das klappt aber, dank Tutorials im Netz.
Zweiter Schritt war das Anzeigen eines Würfels. Würfel, weil ich den aus jeder Perspektive sehen könnte, selbst wenn ich mich mit x,y und z mal vermache.
Dritter Schritt war das Anzeigen von 80x80x80 Würfeln. Immerhin soll das mal eine große Welt werden. Doch hier tritt ein Problem auf: Es ruckelt wie Schwein. Die CPU geht hoch an die 25% Auslastung (keine Mehrkernoptimierung, ist also Volllast) und die Grafikkarte gurkt bei 20% rum -> Definitiv CPU-Limitiert. Dabei lasse ich die Würfel lediglich pro Frame in drei geschachtelten Schleifen erzeugen, also nichtmal wirklich berechnungen drumherum. Diese Schleife wird jedes Frame ausgeführt, ist also schon ein Batzen Arbeit, aber es sollte doch trotzdem nicht so ruckeln, oder?
Einfache Rechnung: Moderne Spiele schaffen es, 2Mrd Polygone gleichzeitig auf dem Bildschirm darzustellen und das bei 60 fps. Von mir aus auch nur Benchmark-Suiten, aber das Szenario ist nicht unrealistisch. Meine Würfel sind jetzt grob gerundet 500.000 Stück mit 6 Polygonen pro Würfel -> Also nur ein Zweitausendstel von dieser riesigen Welt. Und ich habe keine Berechnung wie Physik, bewegliche Objekte oder ähnliches drin. Nur diese Würfel anzeigen lassen und etwas entlang den x- und z- Koordinaten (horizontal) laufen.
Wie kriege ich es also hin, dass die Würfel alle angezeigt werden können, ohne dass es ruckelt wie die Pest? Wenn die Erklärung etwas aufwendiger wird, gebe ich mich auch mit Links zufrieden, aber ich bin scheinbar zu blöd, um im Netz darauf eine Antwort zu finden :/
liebe Grüße und schoneinmal Danke für die Antworten
SoDaTierchen