C++ Anfängerfrage || Welche Library?
lima-city → Forum → Programmiersprachen → C/C++ und D
bieten
code
erfahrung
frage
funktion
http
nehmen
null
paar
plattform
schau
spiel
sprache
tip
unterschied
url
verwenden
vorhaben
vorteil
windows
-
Ich bin derzeit dabei, von C# auf C++ umzusteigen, um mehr in den Bereich der Spieleprogrammierung einzutauchen.
Dazu hab ich mir mal das DirectX SDK besorgt, mich ein bisschen in C++ belesen und ein paar Basisprogramme erstellt.
Ich bin zuversichtlich, dass ich mit der Zeit schon in die ganze Sache hineinwachsen werde, mir stellt sich jetzt allerdings ein weiteres Problem, dass ich nicht ganz überblicke.
Die Frage bezieht sich in der Hinsicht nicht auf ein geplantes Vorhaben, gleich mal ein neues Crysis aus dem Boden zu stampfen, aber rückblickend auf solche resourcenlastigen Spiele eben folgende Frage....
Welche Library soll ich verwenden?
Ich habe jetzt die Wahl zwischen CLR, MFC und Win32.
CLR soll ja die größte mitgelieferte Funktionspalette samt Garbage Collection bieten, setzt aber .NET Framework vorraus.
Das gute an MFC ist, dass man das .NET Framework nicht benötigt, Win32 hat dann kaum mehr Vorraussetzungen, bietet aber auch den geringsten mitgelieferten Funktionsumfang.
Soweit habe ich mir jetzt mal den Unterschied dieser 3 aus Google zusammengestückelt.
Was mich jetzt interessieren würde, ist nicht unbedingt die "einfachste" und "lesbarste" dieser Varianten zu nehmen, sondern die vergleichsweise performanteste.
Ich mach mir unter anderem Gedanken darüber, ob die CLR vielleicht "überladen" mit Funktionen ist und das zu Geschwindigkeitseinbußen führt.
Es wäre toll, wenn mir jemand den Unterschied zwischen den drei erklären kann....die Suchergebnisse zeigen nur die Vorteile der jeweiligen Librarys auf, kaum die Nachteile.
Womit sollte ich beginnen?
Gibt es grobe Unterschiede in der Auslegung der Sprache selbst (mal abgesehen von weniger Funktionen zu Win32 hin)?
Ich stehe wirklich grad am Anfang....kann auch sein, das meine bisherige Interpretation totaler Blödsinn ist.
Ich habe auch noch irgendwas vom managed und unmanaged Code gelesen....wo liegt da der Unterschied? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
adelwoehrer schrieb:
Also mal laut Wikipedia:
Ich habe auch noch irgendwas vom managed und unmanaged Code gelesen....wo liegt da der Unterschied?Managed code is a term coined by Microsoft to identify computer program source code that requires and will only execute under the management of a Common Language Runtime virtual machine (resulting in bytecode).
Einfach erklärt: das ist sowas wie C# (.NET), eine Sprache die nicht direkt ausgeführt werden kann, sondern eine Virtual Machine braucht. Dabei kommen wir auch gleich zur nächsten Erkenntniss: CRL = .NET
MFC = Microsoft Foundation Class
Und zu deinem Vorhaben mit dem Spiel: nimm Win32. Du solltest dich sowieso nicht zu viel auf die Windows API einlassen, da dir DirectX alles wichtige schon bieten müsste... und mehr als dann noch die ANSI C++ Bibliothek solltest du nicht benötigen.
Es schadet übrigens auch nicht, wenn du so wenig wie möglich die Windows API verwendest, da du dann später wenn dein Spiel mal wo anders als unter Windows laufen soll weniger Arbeit beim Portieren hast. -
Und zu deinem Vorhaben mit dem Spiel: nimm Win32.
Hab mich jetzt den Rest des Tages damit beschäftigt....sieht komplizierter aus, als es ist.
Die ersten Dreiecke hüpfen schon am Bildschirm rum.
Jetzt muss ich noch dahinter kommen, wie das mit den Engines funktioniert....aber ich les mich erstmal weiter in DirectX ein. -
adelwoehrer schrieb:
Welche Engines?
Jetzt muss ich noch dahinter kommen, wie das mit den Engines funktioniert....
adelwoehrer schrieb:
Wenn man dir einen Tipp geben darf: schau dir lieber statt DirectX die freie Alternative OpenGL an, das läuft auf viel mehr Plattformen, also auch auf Linux oder aber auf Andorid oder etwas sehr ähnliches auf der Nintendo Wii (nur ein paar Beispiele). Welchen Vorteil hat das? Wenn du etwas etwickelt hast kannst du es sehr einfach auch für andere Platformen herausbringen, ohne alles umschreiben zu müssen.
aber ich les mich erstmal weiter in DirectX ein. -
Hallo adelwoehrer,
das was man als 'Win32' bezeichnet ist die grundlegende Windows API und besteht im wesentlichen nur aus C-Funktionen. Das MFC-Framework ist letzten Endes ein in C++ implementierter Wrapper um die Win32 API. Das ist (von der Portabilität und Umfang mal abgesehen) mehr oder weniger vergleichbar mit GUI-Toolkits wie QT, wxWidgets, usw.
Wenn Du mit MFC arbeitest wirst Du Dich aber trotzdem in die Win32 API einarbeiten müssen, da das Abstraktionsniveau im Allgemeinen nicht sehr hoch ist.
Wenn Du auf Basis von CLR arbeitest, dann steht Dir die ganze .NET-Runtime zur Verfügung. Diese greift im Kern auch auf die Win32-API zurück, wobei der direkte Zugriff bzw. Integration von API-Funktionen wesentlich schwieriger/aufwändiger ist. Allerdings spricht man dann von Managed-C++ was sich von normalem C++ unterscheidet. Dann kannst Du aber auch gleich C# nehmen, da Du mit Managed-C++ keinerlei Vorteile dafür aber wesentlich hässlicheren Code hast. Im CLR-Umfeld könnte dann evtl. XNA für Dich interessant sein.
Das Performanteste ist eigentlich, wie hackyourlife schon sagte, die direkte Verwendung der Win32 API. Da Du aber sowieso mit C++ und nicht mit C programmierst kannst Du auch MFC verwenden ohne Einbußen zu erleiden.
Da Du Dir DirektX ausgesucht hast ist das Thema Portabilität sowieso vom Tisch, da das nur auf Windows-Systemen läuft (ein bisschen geht noch mit Wine oder CodeWeaver). Wenn Du nicht nur für Windows-PCs sondern auch andere Windows-Plattformen entwickeln willst, dann solltest Du C# mit XNA verwenden, da es unter Umständen in Zukunft keine Möglichkeit mehr gibt auf Windows RT Systemen an die Win32 API heranzukommen (bin mir in dem Punkt aber nicht sicher, da ich noch kein Windows Tablet/Phone in den Fingern hatte). -
Welche Engines?
Naja, dachte da an das Unreal Development Kit.
Wenn man dir einen Tipp geben darf: schau dir lieber statt DirectX die freie Alternative OpenGL an.
Gibts es da Performance-Unterschiede?
Wenn DirectX schneller rendert (oder wie man das nennt) ist es mir durchaus recht, zugunsten der Geschwindigkeit bei Windows zu bleiben und auf die Platformunabhängigkeit zu verzichten.
Ich habe aber sowohl mit DirectX als auch mit OpenGL null Erfahrung....meist wird ja noch auf DirectX 9 gesetzt....aber 10 und 11 sind ja auch schon draußen, kann da OpenGL mithalten?
....also wie gesagt, kenne im Prinzip beides nicht, ist nur als allgemeine Frage zu verstehen. =) -
adelwoehrer schrieb:
OpenGL kann mithalten, hat auch mehr Erweiterungen ... die Frage ist nur was du davon auch ausnützt.
Ich habe aber sowohl mit DirectX als auch mit OpenGL null Erfahrung....meist wird ja noch auf DirectX 9 gesetzt....aber 10 und 11 sind ja auch schon draußen, kann da OpenGL mithalten? -
die Frage ist nur was du davon auch ausnützt.
Die Antwort würde mir leichter fallen, wenn ich wüsste, was ich eigentlich alles brauche. :-)
Ich habe konkret keine Spielidee, ich will mich nur mal mit der Umgebung vertraut machen.
....ich habe für DirectX ein hervorragendes Tutorial gefunden....gibts auch gute für OpenGL? (also von Grund auf angefangen?)
Wenn Du Links hast, immer her damit....sonst google ich morgen mal. :-)
Beitrag zuletzt geändert: 9.8.2012 22:00:53 von adelwoehrer -
adelwoehrer schrieb:
Schau mal bei diesem Thread vorbei: Gutes Buch für OpenGL Verständnis
Wenn Du Links hast, immer her damit.... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage