Spiele mit C++ & DirectX programmieren.. wie fange ich an?


  • Mod

    da du selbst angibst, wie man es richtig macht, ist das kein problem von c++, sondern, dass manche damit nicht umgehen können weil sie nicht wissen was der compiler macht... das prob hab ich aber irgendwie nicht, doch wenn es dich so sehr stört, schreib einen preprozessor der dir die header in der richtigen reihenfolge included und entsprechende class ... ; einfügst 😃

    wenn man das in c++ sauber macht, dann schaut es eigentlich so aus:
    D3DPRESENT_PARAMETERS d3dpp(false,hwnd,85, D3DPRESENT_RATE_ONE,1);

    oder im D3DPRESENT_RATE_ONE code nach der decl

    D3DPRESENT_PARAMETERS d3dpp=D3DPRESENT_PARAMETERS(false,hwnd,85, D3DPRESENT_RATE_ONE,1);

    3. & 4.
    schliesse mich tggc an

    5. & 6.
    wenn du STL nutzt ist das quasi in der sprache inegriert, weil es so ziemlich standart ist bei c++ und dass compiler das nicht von grund auf in sich haben ist eher ein segen, wer weiß, wozu man dann sonst bei manchen von denen sonst gezwungen wäre.

    //---------------- C++ ----------------
    class Object{
    private:
    static unsigned int cRef;
    public:
    Object(void);
    ~Object(void);
    };
    unsigned int Object::cRef = 0;
    Object::Object(void){
    cRef++;
    }
    Object::~Object(void){
    cRef--;
    }
    

    und wenn du auf
    unsigned int Object::cRef = 0;

    im speziellen anspielst, nutz 'ne singleton class, dann geht alles wie von selbst 😉

    besorg dir visual assist, das teil highlightet dir alles + code completion + docu einblendung + funktionparameter anzeige + "codeprediction" (zeigt dir nen vorschlag an, was du als nächste tippen könntest, z.B. wenn du einen parameter in eine funktion übergeben könntest, dann einen passenden parameter und dann kann man wie bei code completion tab drücken und es steht drinne!)

    ich finde c++ ist die beste sprache die man haben kann, man kann systemnah coden, assembler einfügen (wobei das nicht wirklcih c++ bestandteil ist), und man kann mittels templates sogar funktional programmierer (wozu es bei SGI echt kranke artikel und samples gibt)

    und wenn man sich halflife2 anschaut, dass angäblich ziemlich auf anhieb auf 64bit systemen laufen sollte, ist c++ protabler als der ganze rest :D:D:D

    rapso->greets();



  • Ich finde es gut, das h und cpp getrennt sind. Java-Klassen sind mir zu unübersichtlich, wenn ich nur mal schnell eine Funktionsprototyp anschauen möchte. Man kann so auch erstmal ein Interface nur hinschreiben und es kompiliert schonmal. Ist aber Geschmackssache...

    Einmal javadoc drüber und da is' nix unübersichtliches mehr!
    Ein "Interface" nur hinschreiben und es kompiliert schonmal?! Eine Header-Datei kompilieren?!
    Aber das geht in Java doch gerade! Interfaces - zack - feddich...

    Aber naja...



  • Original erstellt von KXII:
    ich muss leider sagen, das die dinge die mich an c++ stören, leider so vielfältig und komplex sind, das ich mehrere seiten bräuchte um sie genau beschreiben zu können.

    Akzeptiert, dennoch glaube ich dass Du dann einfach mit einer anderen Sprache als C++ besser fahren würdest als auf "die nächste Version" zu warten, c++0x wird voraussichtlich ganz andere Neuerungen bieten als die die Du scheinbar haben möchtest (die - nichts für ungut - mir übrigens auch nicht sinnvoll erscheinen 🙂 ).

    Ich an Deiner Stelle würde wirklich nicht einfach darauf warten dass C++ eines Tages so aussieht wie ich es gerne hätte; beschaff Dir mal ein paar gute Entwicklungswerkzeuge, das erleichtert das Programmieren enorm und wenn Du dann noch immer die gleichen Bedenken hast dann such Dir einfach eine Sprache die Deine Bedürfnisse besser erfüllt, es gibt ja genug! 🙂

    Ishildur: Ich verweise einfach mal auf die Beiträge von TGGC und rapso, in meinen Augen würden die von Dir genannten Sprach-"Features" C++ zudem nur unnötig verfetten lassen.

    <Sgt. Nukem>: Die "C++ Vs. Java"-Diskussion (-bzw. Flame) wurde hier schon öfters durchgekaut, für Details einfach mal suchen...



  • @rapso

    ich finde c++ ist die beste sprache die man haben kann

    Ok, versuchen wir es einmal anders.
    Jetzt kommt es auf deine Ehrlichkeit an !!!
    Zähl doch bitte mal alle Programmier - sowie Scriptsprachen auf, die du gut kennst und ich meine, die du wirklich gut kennst. Dann zählst du für jede Sprache 4 - 5 Argumente auf, wieso du C++ bevorzugen würdest...

    Gruss Ishildur



  • Original erstellt von Ishildur:
    Zähl doch bitte mal alle Programmier - sowie Scriptsprachen auf, die du gut kennst und ich meine, die du wirklich gut kennst. Dann zählst du für jede Sprache 4 - 5 Argumente auf, wieso du C++ bevorzugen würdest...

    Hmm, die Debatte trägt irgendwie seltsame Früchte - sollen wir jetzt ernsthaft Python mit C++ mit Lisp vergleichen? 😕



  • Original erstellt von <Sgt. Nukem>:
    **Einmal javadoc drüber und da is' nix unübersichtliches mehr!
    Ein "Interface" nur hinschreiben und es kompiliert schonmal?! Eine Header-Datei kompilieren?!
    Aber das geht in Java doch gerade! Interfaces - zack - feddich...

    Aber naja...**

    Der Inhalt einer Header Datei wird bekanntlich immer kompiliert, wenn man sie irgenwo included. Ich kann also Funktionen und Methoden aufrufen, ohne das ich sie geschrieben habe. Das mach ich ziemlich oft, wenn ich so dahinprogrammier. Das hat nix mit dem was Interfaces in Java zu tun. Da ist sicher sehr subjektiv gesehen, aber das hatte ich auch extra betont.

    Javadoc ist toll, allerdings haben diese html-Dokus den Nachteil, das man schlecht drin suchen kann.



  • @Ishildur

    Was soll den das ???

    das nennt man Forward Deklaration und ich weiss nicht wie der Compiler dass sonst machen soll (und ich weiss auch nicht wo das Problem da ist)

    aber in deinem Fall bringt dir das eh nichts, wenn musst du das so machen

    class Object;
    
    class Window {
      std::list<Object*> obj;
    };
    
    class Object {
      Window x; //deklaration von Window muss bekannt sein
    };
    

    Da könnte man doch erwarten, dass des Compiler die entsprechenden Klassendeklarationen in den dem Projekt angehörigen CPP Dateien suchen geht.

    klar, ich hab lust 3 Stunden zu warten, bis mein Projekt fertig kompiliert ist, nur weil ich irgend wo keine Forward Deklaration schreiben will 🙄

    Entweder hast du noch nie ein großes Projekt kompiliert oder du hast viel Zeit um auf deinen Compiler zu warten 😉

    Wie währe es mit einer Sprachunterstützen Form von Regular - Expressions ?

    Eher eine RE Implementation in die Std Lib

    Zu den letzten Beiden: Ich habe bisher keine Sprache gesehen (was nicht heissen soll, dass es sie nicht gibt !) Die dynamische Datenstrukturen direkt in der Sprache unterstützen.

    😕

    doch wie wir alle wissen, reagiert dann die Synthax - Hervorhebung nicht, weil byte dann kein Schlüsselwort ist.

    hmm, wie wär es damit, die IDE den Editor zu wechseln? Also die Darstellung des Quelltextes in einer IDE herranzuziehen um eine Sprache zu kritisieren, finde ich irgend wie merkwürdig

    und die ganzen Cast

    öhm. Eigentlich sollte man auch in C++ so programmieren, dass man keine Casts benutzt.

    @KXI

    wenn ich eine mp3-datei abspielen möchte, dann möchte ich in meinem player lediglich auf play drücken müssen, und nicht noch 100 verschiedene dinge vorher aktivieren, einstellen oder sonst wie konfigurieren müssen (ausser es ist notwendig, weil ich es so will, und der compiler es erraten müsste aus unendlich vielen möglichkeiten).

    und ich dachte du programmierst Direct X und dann regst du dich über so was auf? 😃 SCNR

    wenn ich ein programm schreiben möchte, dass ein paar klassen hat, die ein paar berechnungen durchführen und diese dann ausgeben, dann möchte ich NUR DAS dem compiler/ide mitteilen müssen, und nicht noch vorher 100 verscheidene sachen aktivieren, einstellen oder sonst wie konfigurieren müssen, aber leider muss man das in c++, auch wenn es leute gibt, die was anderes sagen.

    bitte gibt mir dafür ein kleines Beispiel, da ich diese Kritik in keinster Weise nur annährend nachvolziehen kann



  • Original erstellt von nman:
    <Sgt. Nukem>: Die "C++ Vs. Java"-Diskussion (-bzw. Flame) wurde hier schon öfters durchgekaut, für Details einfach mal suchen...

    Hab' ICH die angefangen??

    Ich will darüber im Speziellen gar keine Diskussion führen, eure 2-wöchentlichen OpenGL vs. DirectX "Diskussionen" regen mich mittlerweile auch nur auf... 🙄



  • @kingruedi

    diese letzen sätze von mir sollen keine kritik darstellen, sondern sind ein allgemeiner hinweis, wie man programmieren sollte. egal in welcher sprache. mir ist es am liebsten, wenn programme die dinge übernehmen, die ich sowieso (unnötigerweise) hinschreiben müsste. das können dann zum einen sachen sein, die sich nur auf die ide beziehen, oder auch sachen, die aufgfund der komplexen verwachsung innerhalb der sprache kaum oder gar nicht aus der sprache zu entfernen sind. eine gute programmiersprache verlangt nur das von einem programmierer, was individuell vom programmierer programmiert werden möchte, und vom compiler erraten werde müsste. das fängt eigentlich schon bei so kleinen sachen an, das man, um eine klasse zu deklarieren folgendes schreiben muss:

    class CRectangle
    {
    public:
      CRectangle(void);
      ~CRectangle(void);
    };
    

    natürlich habe ich dafür auch einen kleines "ClassCreator"-Programm das mir eine cpp und eine header datei erstellt, in der schon der klassenrumpf enthalten ist, aber genau das könnte auch eine IDE alleine machen. beziehungsweise man könnte sich den ganzen text sparen und die ide übernimmt die verwaltung vollkommen alleine, in der art, das man nur angibt:

    1. auf button "neue klasse erstellen" klicken
    2. name der klasse eingeben
    3. FEDDISCH (IDE erstellt automatisch alle "internen" verwaltungstrukturen)

    das könnte man auch mit c++ und einer guten IDE machen. aber jetzt stell dir mal vor es gibt viele solcher automatisierungen (ich will nicht alle vereinfacherungen/automatisierungen aufzählen, die mir einfallen. versuch dir einfach mal vorzustellen es gäbe viele solcher dinge), dann wird die eigentliche sprache ja so weit auseinander genommen und verändert, das man nicht mehr z.b. von c++ reden könnte. nich will keine drag and drop and klick and klick orgien, aber wenn man mal bedenkt, wieviel unötiges zeug man eigentlich immer wieder schreibt, nur um die einfachsten dinge zu tun, naja ...

    vergisst erst mal meine kritik an c++, viel mehr finde die IDE's viel zu dumm und verbesserungsfähig.

    noch ein kleines eispiel:

    wenn ich in der klasseddefinition (h-datai) eine funktiion angebe, wieso muss ich diese dann nocheinmal in der cpp-datei hinschreiben? das könnte doch auch eine IDE übernehmen.


  • Mod

    Original erstellt von Ishildur:
    **@rapso
    Ok, versuchen wir es einmal anders.
    Jetzt kommt es auf deine Ehrlichkeit an !!!
    Zähl doch bitte mal alle Programmier - sowie Scriptsprachen auf, die du gut kennst und ich meine, die du wirklich gut kennst. Dann zählst du für jede Sprache 4 - 5 Argumente auf, wieso du C++ bevorzugen würdest...

    Gruss Ishildur**

    wenn du so eine auflistung haben möchtest, dann google mal 😉

    rapso->greets();



  • @KXII:
    Das konnte mehr oder weniger alles MSDev6 mit VA. Du bist irgendwie selber schuld, wenn du dir C++ durch 'nen Editor vermiesen lässt. 😉



  • Original erstellt von <Sgt. Nukem>:
    Hab' ICH die angefangen??

    In diesem Thread schon, such mal auf der ersten Seite nach "Java"!
    Ich finde einfach dass es dumm wäre den Thread hier auch in einen C++ Vs. Java-Flame zu verwandeln.

    Original erstellt von <Sgt. Nukem>:
    Ich will darüber im Speziellen gar keine Diskussion führen, eure 2-wöchentlichen OpenGL vs. DirectX "Diskussionen" regen mich mittlerweile auch nur auf... 🙄

    Das ist gut, ich mag diese Diskussionen nämlich auch gar nicht und verweise jedes Mal wenn jemand fragt ob denn jetzt OGL oder DX schneller sind auf die FAQ; nur wenn völlig falsche Antworten kommen finde ich es schon besser wenn jemand darauf reagiert. (Warum das übrigens 'unsere 2-wöchentlichen OpenGL vs. DirectX "Diskussionen"' sein sollen kann ich nicht nachvollziehen da "wir" selten derartige Sachen ins Rollen bringen.)


Anmelden zum Antworten