Welche Grafikprogrammierung soll ich Nutzen?



  • Hi Leute,

    ich habe mir mitlerweile die Grundlagen, die reinen Basics, von C++ beigebracht und möchte in die Grafikprogrammierung einsteigen (für ein Spiel). Ich habe vorher schon mit Java programmiert, dises wurde mir aber zu langsam und ineffizient, da ich ein Simulationsspiel programmiere. Dieses ist in first person und 3D.

    Jetzt weiß ich nicht welche Grafikprogrammierung ich optimalerweise nutzen soll und was ich alles für Vorwissen dazu brauche. Vielleicht kennt ihr auch ein gutes Buch oder ein gutes Tutorial?

    Ich bin im 3D Gebiet leider noch ein unbeschriebenes Blatt, bei Java gab es nur OpenGl und da habe ich kein gutes Lehrmaterial gefunden...

    Vielen Dank jetzt schonmal für eure Hilfe.



  • Schau dir mal cinder an: http://libcinder.org/



  • Komm bloss nicht auf die Idee, selber was zu schreiben. Das ist zwar nicht so schwer, aber es nervt tierisch, wenn man sich jeden Kram, u.A. auch die Textureloader, Meshloader selber schreiben muss.

    Ich habe Irrlicht fuer mich entdeckt. Es ist zwar kein schoenes C++ (viel new, keine smart-pointer, manuelles Referenzzaehlen, ueberall Type erasure, keine STL), aber durchaus annehmbar und im Gegensatz zu manchen anderen Libraries wenigstens lesbar, konsistent und erweiterbar.



  • Solltest du Grafikprogrammierung machen wollen, weil man das halt für ein Spiel braucht, dann ist eine Engine wie Irrlicht sicherlich gut.

    Willst du aber Grafikprogrammierung lernen, weil das lernen der Grafikalgorithmen an sich für dich interessant ist, dann kannste ja trotzdem OpenGL und DirectX unter C++ lernen.

    Ich z.B. mache 3D-Programmierung, weil ich einfach Spaß daran habe, mich mit den Algorithmen zu beschäftigen. Das am Ende nur Müll herraus kommt, ist nur zweitrangig 😃



  • ja ich kann da nur zustimmen. irgendwie dauert das extrem lange bis man mit dem wissen so weit ist, dass man in c++ brauchbare Spiele schreiben kann. Vor allem weil so APIs wie OpenGl nicht gerade darauf optimiert wurden besonders programmierer freundlich zu sein. Ich kann auch von dem Autodidaktischen weg abraten. Such Menschen mit denen du das zusammen machen kannst. Aber lernen tut man schon viel.

    Nichts desto trotz schreib ich auch immer alles selber und es kommt eigentlich nie so weit, dass man am ende behaupten könnte es wäre ein Brauchbaren Spiel. Hab gerade wieder mit einem neuen Projekt angefangen.



  • Ogre3d.



  • dir gehts um "get things done" - sprich: du willst möglichst schnell deine simulation fertigbekommen und interessierst dich weniger für die internen details der 3d programmierung: dann nimm eines der oben vorgestellten frameworks.

    -oder-

    dir gehts darum, 3d graphikprogrammierung zu verstehen, willst wissen wie die graphik pipeline in einer graphikkarte funktioniert und willst diese per opengl programmieren?
    dann kauf dir ein gutes buch zum thema graphikprogrammierung, und beschäftige dich mit matrizenrechnung.
    du wirst sehen, das opengl dann (fast) nur noch anwenden der gelernten mathematik ist, mit dem hintergrundwissen, wie eine graka eben funktionert.
    Buchempfehlung: Fundamentals of Computer Graphics



  • fsfsgdfgd schrieb:

    du wirst sehen, das opengl dann (fast) nur noch anwenden der gelernten mathematik ist, mit dem hintergrundwissen, wie eine graka eben funktionert.

    Nein. OpenGL ist stundenlanges Suchen von irgendwelchen subtilen Bugs, die mit einem ordentlichen API nie enstanden waeren.
    Das einzige, was fuer OpenGL spricht, ist die Plattformunabhaengigkeit. Wenn man das nicht braucht, Finger weg.



  • Ich würde an deiner Stelle mit 2D-Entwicklung anfangen. Du lernst dabei sehr wichtige Grundlagen wie Vektorgeometrie, Transformationen, Time-Steps und natürlich auch die Strukturierung eines Spiels im Code. Letzteres sollte nicht unterschätzt werden; gerade wenn du noch keine grösseren Projekte geschrieben hast, brauchst du noch einige Erfahrung, bevor sich die Entwicklung eines ehrgeizigen 3D-Spiels überhaupt lohnt.

    Mit SFML erreichst z.B. du äusserst schnell schöne Resultate. Nach einiger Zeit sollte es auch kein Problem sein, auf 3D zu wechseln. Dann gibts zum Beispiel Irrlicht, OGRE oder CrystalSpace. Ich persönlich finde Irrlicht ziemlich einsteigerfreundlich.



  • Die Frage ist vom 19.07. - ich würde breikopf erstmal antworten lassen bevor ich hier was dazuschreibe. Vielleicht interessiert es ihn schon gar nicht mehr.



  • Kellerautomat schrieb:

    fsfsgdfgd schrieb:

    du wirst sehen, das opengl dann (fast) nur noch anwenden der gelernten mathematik ist, mit dem hintergrundwissen, wie eine graka eben funktionert.

    Nein. OpenGL ist stundenlanges Suchen von irgendwelchen subtilen Bugs, die mit einem ordentlichen API nie enstanden waeren.
    Das einzige, was fuer OpenGL spricht, ist die Plattformunabhaengigkeit. Wenn man das nicht braucht, Finger weg.

    naja performance ist auch nicht gerade unwichtig. Und das shader selber compilieren nerft auch.



  • - (Spiele-)/Grafik-Engine selbst programmieren ist ohne nennswerte Programmiererfahrung keine gute Idee. Wenn man am Ende Leistung und schöne Effekte haben möchte, erst recht nicht. Es geht zuviel Zeit auf einer "falschen" Baustelle verloren!

    - Engines: http://devmaster.net/devdb/engines
    Einige wurden hier schon genannt

    - Unity3D ist einen Blick wert (Java oder C#)

    - bei C++ hat mir die Unreal Engine gefallen

    - Allerdings braucht es bei allen Frameworks viel Einarbeitungszeit

    - viele kleinere Projekte zum Testen sind am Anfang empfehlenswert

    - Ohne eine detalierte Klassen-/Datenplanung gerät ein größeres Projekt schnell in eine Phase bei der durch Änderungen/Anpassungen viel Reibung entsteht und der Fortschritt leicht in stocken gerät. Schlimmstenfalls müssen einige Dinge komplett anders realsiert werden was unötige Zeit und Arbeitskraft kostet.


Anmelden zum Antworten