Man kann mit jeder mir bekannten Hochsprache unter Windows die DirectX und openGL layer benutzen (= ein "Spiel schreiben"). Lediglich für C/C++ und C# gibt es von Microsoft bereitgestellte Header-files, für andere Sprachen ist man auf die Community angewiesen die passenden DirectX oder openGL header zu finden. Für Delphi z.b. gibt es aktuelle OpenGL und auch DirectX11 Header die von der Community erstellt wurden (und keineswegs schlechter oder besser als die C/C++ äquivalnte sind).
Und wenn man diese Header erstmal hat, kann man im Prinzip Code aus C# kopieren und in C++ und Delphi einfügen, kurz die Syntax entsprechend anpassen, und schon läuft der DirectX oder openGL code aus einer gleich in einer anderen Sprache. Daher kann man sich auch als C Programmierer getrost die Delphi-OpenGL Manual reinziehen und verstehen, denn die verwendeten Methoden (Prezeduren und Funktionen) sind in allen Sprachen gleich. Nur bei den Variablentypen muss man je nach Sprache etwas abändern.
So ist es auch mit Java möglich 3D-Spiele zu programmieren, was natürlich grade bei Java-games zu kurz kommt ist die Performance, siehe Minecraft, welches erst nachträglich um Shader ergänzt wurde. Und diese shader-ergänzung kam von jemandem, der garantiert nicht nur Java kann, und der eine 100 mal performantere Engine hätte schreiben können mit C#/c++/delphi. Wofür er natürlich dann wiederrum den einzigen Vorteil von Java nicht hätte nutzen können, die Multiplatformfähigkeit.
Sorry mr. Coding Lounge, ich wollte es eigentlich schon bei deinem letzten Post hier im Thread sagen: Das was du schreibst kann man direkt aufs Klopapier drucken.
Quote:
|
Ich rede nicht von der schnelligkeit, sondern von den Ressourcenverbrauch und da braucht Java WESENTLICH mehr (als Beispiel RAM)
|
Ja und nein. Startest du ein Java-JAR dauert es länger bis das Programm geladen ist, denn das System muss zunächst die JRE starten. Die JRE verbraucht tatsächlich ne Menge resourcen. ABER die JRE läuft nur einmal und muss nur einmal gestartet werden - wieviele Javaprogramme dann darauf zugreifen ist egal und das einzelne Javaprogramm braucht getrennt von der JRE nicht bedeutend mehr oder weniger als vollwertige Programme. Ein Problem was man grade bei dem letzten Java update aber gemerkt hat ist, wenn die JRE abstürzt, stürzen alle Javaprogramme die grade laufen auch gleich ab. Das ist theoretisch auch bei .NET also C# programmen möglich, allerdings scheint das .net Framework stabiler zu sein als Java.
Quote:
|
Es gibt Unterschiede. Da man für jedes gute Programm in reinem C++ auch Header Dateien schreiben muss wird es ganz anders. In C# muss man nur "header" Dateien schreiben, wenn man eigene Bibliotheken (ja ich weiß, es ist fast dasselbe) Programmieren will. Das braucht man aber bei C# eher selten.
|
Das wäre super Delphi-werbung: da gibt es im eigentlichen Sinne keine Header, nur source-files die ggf. gegen DLLs linken. Aber um auf das einzugehen was ich da Quote: nigga u just went full retard. Weder "muss" man in C++ überhaupt Header-Dateien schreiben, noch kommt man in C# drumherum eigene Bibliotheken zu schreiben wenn das Projekt entsprechend komplex wird. Klar kann man sowohl in C++ als auch in C# oder Delphi auch ohne Header auskommen, das gleiche gilt aber auch für Zeilenumbrüche, einschübe, formatierung, kommentare, .....
Quote:
|
C++ mit DirectX erleichtert die 3D Spiele-Programmierung ungemein. Hast du dich noch nie gefragt warum Spiele wie Skyrim auf Windows PCs laufen aber nicht auf Linux oder Mac obwohl sie in C++ geschrieben sind ?
|
DirectX hat rein garnichts mit C++ zu tun (ok, es wurde vermutlich teilweise in C++ geschrieben). Warum man Spiele mit DirectX nicht auf Mac und Linux zum laufen bekommt liegt einzig und allein daran, dass Microsoft DirectX nicht open-sourced (was für GNU/linux nötig wäre, zumindest um es in den Kernel zu commiten) und auch nicht an Apple verkaufen will (was für den Mac erforderlich wäre).
DirectX erleichtert die Grafikprogrammierung nicht nur ungemeint, DirectX ermöglicht überhaupt Grafikprogrammierung. Man hat beim Spieleprogrammieren eigentlich immer nur die Wahl zwischen openGL und DirectX. Das sind sogenannte Software-Layer, die dem Programmierer die Arbeit abnehmen mit dem GPU-Treiber zu sprechen. Ansonsten müsste jeder Spielehersteller eine Version des Spiels für jeden einzelnen Grafiktreiber rausbringen - und das ist offensichtlich nicht im Sinne der Entwickler.
Quote:
|
2. DirectX wird nurnoch für die XBox weiterentwickelt (9.0) ansonsten werden alle Programme / Spiele demnächst nur noch auf XNA laufen können, was ich persönlich zwar schwachsinn finde, aber so sind die Firmen nunmal.
|
XNA ist nur ein Software-Layer ÜBER DirectX. Sollte DirectX nicht weiterentwickelt werden, bleibt auch die unterliegende Technik des XNA gleich. Und afaik ist DirectX für Microsoft immernoch sowas wie ein Kaufargument, warum man überhaupt Windows kaufen sollte. Denn die tendenzen der 0815 User gehen ja scheinbar mittlerweile Richtung OSX mit überteuerten MacBooks, und wenn OSX aufeinmal auch für Gamer interessant wird, dann ist die ganze Microsoft-Allianz eine ganze Zielgruppe los. Und das würde nicht nur Microsoft sondern auch Intel, nvidia und alle Hersteller von Highend Desktop Hardware treffen.