[Engine Design]


  • Mod

    in meiner engine hab ich einen cullingtree

    z.B. CSphereTree m_Tree;

    wenn ich da etwas raus rendern möchte, holl ich mir eine entsprechende camera

    ICamera* pCam=m_Scene.Camera("Camera01");

    die camera hollt sich dann alle objekte aus dem tree die zu sehen sind

    pCam->PickVisible(&m_Tree);

    dann kann ich die sachen zeichnen lassen mit pCam->RenderList();

    dadurch kann ich z.B. für multipass nur einmal cullen, für nicht bewegte scenen nur einmal cullen und ich kann mehrere cameras haben die sich auch rekursiv aufrufen könnten z.B. um auf schadowmaps zuzugreifen.

    Renderlist geht dann die liste durch und sagt jedem objekt es soll sich rendern, dieses setzt dann das richtige renderscript und ruft vom mesh die render funktion auf.

    natürlich läuft das in der engine

    im mainloop mach ich an sich nur

    pblablaengine->Render(MainCam);

    MainCam ist die normale camera und Render ist die funktion in der engine.

    rapso->greets();



  • also ich hab eigentlich noch keine richtige 3D Engine geschrieben, nur mal was kleines für ein kleines 3D CAD Programm. Dabei hatte ich folgende Klassen

    color_type----
     |      |     |
    rgb   rgba  texture
    
    coord
    
    light
    
    material
    
    primitive----------------------------
     |        |      |      |   |       |
    triangle quad  point  line polygon text
    
    modell
    

    modell lädt die CAD Dateien und erstellt die entsprechenden primitive, diese benutzen coord zum erzeugen der Vertexes

    btw.
    sollte man kein C als Präfix für Klassen benutzen!



  • wieso sollte man kein prefix für klassen benutzen?


  • Mod

    klingt fast wie ne linux lehre obwohl es nur geschmackssache ist.

    ich hab ein I prefix für interfaces C für normale klassen und S für structs... und das ist recht angenehm damit zu arbeiten. bisher hatte ich keinen grund auf sowas zu verzichten bzw. deswegen nachteile zu haben, ist ja nur etwas für die durschaulichkeit und übersichtlichkeit von code....

    rapso->greets();



  • Original erstellt von meister der mnemonics:
    wieso sollte man kein prefix für klassen benutzen?

    Das ist in einem Thread in "Rund um die Programmierung" seitenlang durchgekaut worden, such mal danach!

    Übersichtlicher ist es nicht; eher schwerer zu lesen.



  • C ist sowieso für die MFC gedacht.



  • Wichtig auch immer die C's am Anfang der Klassennamen, sonst ist die Engine Mist... 😉



  • Ich empfehle X.



  • ich hab ein I prefix für interfaces C für normale klassen und S für structs... und das ist recht angenehm damit zu arbeiten. bisher hatte ich keinen grund auf sowas zu verzichten bzw. deswegen nachteile zu haben, ist ja nur etwas für die durschaulichkeit und übersichtlichkeit von code....

    Gute Idee 🙂


  • Mod

    Original erstellt von TGGC:
    Wichtig auch immer die C's am Anfang der Klassennamen, sonst ist die Engine Mist... 😉

    endlich mal gleicher meinung

    :D:D:D

    rapso->greets();



  • also zwischen structs und classes bei C++ zu unterscheiden ist eigentlich ziemlich sinnlos IMHO und dann auch noch C als Namens Prefix zu nehmen um möglichst Konflikte mit der MFC hervorzurufen ist doppelt Sinnlos.

    (wobei meine Erfahrung mit typischen Spiele/Grafik/Spiele-Tutorial Code eh nicht die besten sind 🙄 )

    aber die Diskussion ist eh Sinnlos und sorgt nur für einen Flamewar!


  • Mod

    du hast das wörten "weil" vergessen und den satz der dahinter folgt und eine objektive erklärung gibt, die man nachfolziehen kann. 🙂 sonst ist das irgendwie nur ne meinung.

    würde ich nicht I,S,C und N vor schreiben, dann hätte ich nur konflickte, schliesslich heißen interfaces genauso wie die dazugehörigen klassen (bis aufs prefix)... und mit MFC hat man sowieso nur ärgerlichkeiten (meiner erfahrung nach).

    rapso->greets();



  • Apropos Namenskonflikte, ist das überhaupt ein Thema?

    Ich weiss nciht, wieviele Abhandlungen von list<>, vector<>, map<> u.s.w. ich schon gesehen habe, alle den gleichen Namen. Aber aufgrund von Namespaces doch kein Problem!


  • Mod

    ist auch meine meinung, aber die MFC hat wohl keinen namespace soweit ich weiß... 🙂

    rapso->greets();


Anmelden zum Antworten