Seite 1 von 3

2D-Geschwindigkeit von Grafikkarten

Verfasst: 14.06.2006 09:02
von Kekskiller
Hi, PB-Community.

Ich arbeite fieberhaft in Ideen und Code an meinem Spiel. Es ist ein 2D-Spiel mit vielen selbsentworfenen und -programmierten Effekten die entsprechend alle ohne moderne 3D-Funktionen auskommen. Genau das soll es auch bleiben, so dass man auch mit 3D-ungeigneten oder älteren Grafikkarten das Spiel gut spielen kann.

Ich habe ein paar Versuche angestellt.

Zu beachten ist, dass die 2D-Engine mit Ebenen, Transparentzen und Echtzeit-Verformungen der Tiles und entsprechend auch der Kartengröße arbeitet.

1. Bei meiner MSI Geforce 6600 GT hatte ich bei einer Auflösung von 1280x1024 und vollem Tile-Detail-Grad und 8 Tile-Ebenen ungefähr 50 Frames die Sekunde.

2. Der zweite Versuch war mit meiner internen Grafikkarte, hat zwar auch beschränkt 3D, hat aber recht großen Speicher und ist fix. Das mit fix meine ich wortwörtlich. In allen 2D-Funktionen war sie schneller. Bis zu 74 Frames zählte der Counter.

Nun frage ich mich: Wie kann das sein? Warum sind die neuen Karten in 2D so langsam? Man könnte denken, 2D wird zu stark vernachlässigt. Das die "Büro-Karte" schneller ist, gibt mir Rätsel und Grund zur Hoffnung auf. Gibt es sowas wie ein Verzeichnis für die 2D-Geschwindigkeit solcher eingebauter -Karten? Denn ich würde zu gerne wissen, welche da am fixesten sind... Meine ist ein Intel-Chip mit "Extreme Graphics 2"-Funktion.

Ich hab auch keine Ahnung, unter was ich da bei Google suchen soll...

Verfasst: 14.06.2006 12:14
von Kaeru Gaman
> Transparentzen und Echtzeit-Verformungen der Tiles

alala duddu.. das is 3D function.. bös...


ernsthaft... das tempo-problem in dem fall wird eher an so sachen hängen wie in welchem port hängt die graka, welche bus-geschwindigkeit kann ich erreichen weil ich anderen kram nich drin hab... sowas halt... echte 2D grafix, und damit meine ich ohne verzerrungen, die 3D-commands sind, häng imho einzig und allein von bus und busverfügbarkeit ab. also, wenn ich in nen P1 genug speicher pack und keine soundkarte und kein net drin hab, kann der mit 2D-grafix echt fett was bringen...

Verfasst: 14.06.2006 12:40
von Kekskiller
Ich benutze keine vorgefertigten 3d-funktionen, also selber gecodet ;) . Und auch nicht Purebasic.

Aber das mit Bus ist eine Möglichkeit. Ich hab mich mal mithilfe eines Kumpels informiert und ein paar Sachen über die Kartentypen rausgefunden. Es gibt heutzutage nicht nur 3D-Karten, sondern auch Hochleistungs-2D-Karten. Die haben dann entsprechende Taktungen wie beim 3D, nur halt für 2D optimiert und wesentlich schneller darin. Wahrscheinlich ist die Karte fixer, weil sie direkt mit dem Mainboard verknüpft ist. Die sommerliche Wärme tut wohl auch ihr Ding dazu.

Nochmal Thema 3D: Wie gesagt, ich benutze keine einzige 3D-Funktion, also ohne 3D-Beschleuniger und alles hand-made. Die Engine kommt auch mit wenig CPU-Taktung aus, das einzige was ich brauche ist eben etwas mehr Speicher (wie du schon korrekt erkannt hast) und ne höhere 2D-Geschwindigkeit (normale 3D-Karten reichen aber auch aus...).

Ich denke, das hat sich jetzt geklärt... aber ich bin immer noch für weitere Erklärungen offen ;) . Danke erstmal.

Verfasst: 14.06.2006 13:20
von MVXA
Darf man erfahren welche Schnittstelle (oGL / DX) du nutzt?

Verfasst: 14.06.2006 15:58
von Kekskiller
Für die ersten Tests hatte ich noch die Purebasic-Engine (DX) verwendet. Ich denke, aber ich werde demnächst ALLEGRO (ja, das kam danach) nicht DX, sondern oGL nehmen.

Verfasst: 14.06.2006 17:25
von hardfalcon
IMHO is die 2D-Leistung moderner Karten völlig ausreichend. Wenn die Frames zu niedrig sind, dann leigt das eher an deinen selbstgebauten Effekten. Wenn die alles per CPU machen lassen, und der Treiber der Onboardkarte die CPU weniger belasten als die NVidia-Treiber, dann is die NVidia-Karte jhalt langsamer bei 2D-Zeugs. Eine andere Sache ist, was dein Motherboard für nen AGP-Slot hat. Wenn dein Spiel nicht sauber programmiert ist, könnte im Worstcase-Szenario dein AGP-Bus nämlich bis zum Anschlag belastet werden. Die Onboardkarte jedoch ist direkt im Chipsatz integriert, wodurch ihr eine wesentlich höhere Bandbreite (v.a. zur CPU zur Verfügung steht). Davon mal abgesehen ist es auch möglich, dassdeine NVidia-Karte falsch eingestellt ist. Beim AGP-Bus kann man elend viel falsch einstellen, was die Karten ausbremst. Der simpelste, aber schwerwiegendste Fehler is z.B. wenn man nicht gemerkt hat, dass der AGP-Modus aus irgendeinem Grund gedrosselt wird. Auch das Deaktivieren von Dingen wie Sidebandaddressing oder eine ungünstige AGP Aperture Size wirken sich negativ auf die FPS aus...

Verfasst: 14.06.2006 17:34
von Kekskiller
Das mit den Selberprogrammiertem kann immer stimmen. Nur finde ich es seltsam, dass bei genau den gleichen zu berechnenden Daten das Ding einfach schneller ist. AGP ist 8x, genauso wie eingestellt. Bei meinen heutigen Rechergen auf Arbeit ist mir aufgefallen, dass es Unmengen von diesem Intel-Onboardkram gibt. Ich hab sogar eine Leistungsbeschreibung entdeckt, ich glaub, das Ding ist einfach mal 2D-optimiert. Die kannste auch bei 3D-Spielen vollkommen vergessen, weil solche Onboard-Karten keine geeignete Struktur dafür haben.

Ich sollte sowieso nochmal an meiner Engine rumbauen. Nunja, wobei ich nicht wüsste, was ich bei wenigen, simpelsten Additionen noch optimieren sollte ^^ . Ich denke es liegt einfach mal an dem Bereich, für die die Karten gedacht sind. Die Geforce ist ne 3D-Karte, ohne Zweifel dafür ausgelegt. Und die andere eben für wenig 3D, ohne Mega-Berechnungen, aber ansonsten locker für Massen von 2D.

Verfasst: 14.06.2006 17:41
von MVXA
evt. effekte mit shadern programmieren?

Verfasst: 14.06.2006 18:13
von Kekskiller
Ähm, wie bitte? (nicht negativ auffassen!)

Ich meine, du meinst bestimmt die Shader in den Grakas, den 3D-Grakas, die ich vermeiden wollte ;) . Oder meinst du selbst programmierte :| ?

*verwirrt*

Verfasst: 14.06.2006 19:52
von MVXA
selbst programmierte. Hier ein Programm mit dem man Shader
"designen" kann: http://www.typhoonlabs.com/ . Das sind dann
aber Shader in der OpenGL Shader Language.

steinigt mich, ich kenn mich da auch nicht 100% aus...