WIN GDI oder Directx
-
Hi,
ich bin noch sehr unerfahren mit Spieleprogrammierung. Mit den C++ Grundlagen bin ich schon vertraut. In einem Buch bin ich auf Das Windows GDI gestoßen. Jetzt frage ich mich, ob denn die Funktionen und Befehle nicht auch in DirectX vertreten sind.
Der einstieg in diese Materie ist für mich als Neuling nämlich relativ heftig und deshalb möchte ich mich nicht unnötig in das GDI verkopfen, wenn ich in DirectX genau dasselbe finden kann.
-
Hallo!
Hier stellt sich zunächst einmal die Frage, was willst du generell machen? Für einfache Visuallisierungen oder etwa auch ein 2D Jump & Run Spiel sollte die GDI bzw. die GDI+ reichen.
DirectX bietet dir natürlich mehr Möglichkeiten, obwohl man hierfür generell mehr Initialisierungsaufwand ect. betreiben muss und einige Dinge etwas umständlich umsetzen muss. Bei 3D Szenen wirst du dann sowieso auf D3D oder OpenGL setzen müssen, um die nötige Performance zu bekommen.Für den Einstieg sollte aber die GDI reichen. Denn wenn der Quellcode für dich hier schon gewöhnungsbedürftig ist, dann wird es nämlich bei DirectX bestimmt nicht besser aussehen.
Wobei man hier noch zw. DirectDraw und Direct3D unterscheiden sollte, wobei aber nur noch letzteres weiterentwickelt wird.Gruß
Markus
-
Ich kann dir nur von der GDI abraten, damit was zu programmieren (z.B. ein Jump'n'Run) macht kein Spaß als Anfänger. 3D-Beschleunigung hat so gut wie jeder, deswegen würd ich OpenGL/DirectX auch fürn 2D-Spiel nehmen.
-
Wenn es dir nichts ausmacht, auf Windoof beschränkt zu sein, könntest du dir auchmal die HGE ansehen: hge.relishgames.com
Ist 'ne 2D-Engine, die auf DirectX aufsetzt. Sehr schönes, klares Design und recht leistungsstark.
-
Also ein Jump&Run mit GDI programmieren, ist völlig unpassend. Die GDI kann man im Spielebereich höchstens für Brettspiele gebrauchen, mehr auch nicht. Für alles was darüber hinaus geht, sollte man eine "richtige" API nehmen, DirectX oder SDL oder gleich http://sfml.sourceforge.net/.
Übrigens, wenn dir schon GDI heftig vorkommt, solltest du DirectX gleich lassen. Nimm eine andere API (SFML) die einfacher ist, die dann ihren Zweck ebenfalls erfüllt. Später, mit mehr Erfahrung, kann man immer noch (leichter) DirectX lernen.