Rascher Einstieg in 3D-Programmierung



  • Hi Leute!

    Ich würde gerne mit 3D-Propgrammierung beginnen, genauer gesagt würde ich meine Diplomarbeit im nächsten Jahr gerne der 3D-Programmierung widmen. Nun hab ich einige Fragen bei denen ihr mir hoffentlich hefen könnt:

    Welche Programmiersprache würdet ihr empfehlen?
    Ich beherrsche bereits ANSI C, C#, Java, und dann noch PHP und ActionScript was mit hier wohl eher wenig bringt. Die beste Performance würde wohl C++ bieten und das objektorientierte Modell ist ja nicht so schwer nachzulernen. Was meint ihr?

    OpenGL oder DirectX oder was weiß ich?
    Was ist besser? Das DirektX-SDK hab ich mir schon runtergeladen. Da sind sogar ein paar super Tuts drin aber ganz ohne Kenntnisse sehr schwer verständlich. Was gibts für Alternativen und wo liegen Vor- und Nachteile?

    Womit fang ich an?
    Es gibt ja hunderte Tuts im Internet und auch haufenweise Bücher aber welche sind gut und für Einsteiger gedacht? Das ist ja eher schwer rauszufinden.

    Noch ne kurze Erklärung zum Schluss: Der Verwendungszweck steht noch nicht genau fest aber vermutlich wird es so ne Art 3D-Rundgang in Ego-Perspektive. So genau hab ich mich da noch nicht festgelegt weil ich nicht weiß was in einem Jahr möglich ist. Darum will ich auch so schnell wie möglich einsteigen.

    Ich weiß das sind viele Fragen für meinen ersten Post und bieten wahrscheinlich ziemlich viel Diskussionsraum aber ich hoffe trotzdem das ihr mir helfen könnt.

    Gruss, Mr_Funstick



  • In der Regel bietet jeder Informatikstudiengang eine "Computergrafik-Grundlagen"-Vorlesung, wo du die Grundlagen der 3D-Programmierung beigebracht bekommst, wenn du noch genug Zeit hast, kannst die ja noch besuchen (na ja, wird sich bei dir wohl nicht mehr ausgehen). Wenn du sonst noch keine konkreten Ideen hast und dich noch nicht mal fuer eine Sprache (bzw. OpenGL oder DirectX) entschieden hast, ists relativ schwer dir 'n Buch zu empfehlen.

    Was die Sprache angeht, nimm die, die du am Besten kannst: Sowohl fuer C, C++, C# und auch Java gibts OpenGL-Interfaces. Wenn du DirectX nehmen willst, kannst du noch zwischen C++ und C# auswaehlen. Da du wahrscheinlich eh keinen super-duper-wahnsinnig tollen 3D-Zeugs berechnen willst, ist Performance nicht soooooo der ausschlagende Faktor. Also nimm am besten deine Lieblingssprache, mit der kommst du wohl am schnellsten voran. "OpenGL oder DirectX "ist so ne Frage. Aber wenns eine Diplomarbeit ist, bei der der 3D-Teil im Vordergrund steht wuerd ich OpenGL nehmen, weil's einfach im akademischen Bereich etablierter ist (zumindest hab ich den Eindruck).



  • soweit ich weiß liegt das halt v.a. daran, dass "im akademischen Bereich" bzw. bei wissenschaftlichen Projekten eher Unix/Linuxsysteme eingesetzt werden, bei denen man mit DX nicht besonders weit kommt.



  • Also ich muss hier mal kurz einige dinge klarstellen:
    Ich komm aus Österreich, bin 18 und geh auf ne HTL (Höhere technische Lehranstalt). Und bei uns kann man zur Matura (vgl. Deutschland: Abitur) auch ne Diplomarbeit schreiben, muss man aber nicht. Also wird das mi der Vorlesung schon mal nichts. Mir schwebte da was mit 3D-Programmierung vor weil ich es interessant finde. Das genaue Konzept wird in den nächsten Tagen/Wochen entstehn.

    Außerdem hab ich gerade erfahren dass mein betreuender Lehrer der mich bei der Arbeit unterstützt nur Ahnung von DirectX unter C# oder C++ hat. Also wird er wohl wollen das ich das verwende. Wo liegt eigentlich der Unterschied zwischen DX und OGL??



  • Mr_Funstick schrieb:

    Also ich muss hier mal kurz einige dinge klarstellen:
    Ich komm aus Österreich, bin 18 und geh auf ne HTL (Höhere technische Lehranstalt). Und bei uns kann man zur Matura (vgl. Deutschland: Abitur) auch ne Diplomarbeit schreiben, muss man aber nicht. Also wird das mi der Vorlesung schon mal nichts. Mir schwebte da was mit 3D-Programmierung vor weil ich es interessant finde. Das genaue Konzept wird in den nächsten Tagen/Wochen entstehn.

    Außerdem hab ich gerade erfahren dass mein betreuender Lehrer der mich bei der Arbeit unterstützt nur Ahnung von DirectX unter C# oder C++ hat. Also wird er wohl wollen das ich das verwende. Wo liegt eigentlich der Unterschied zwischen DX und OGL??

    die d3d api ist eher objektorientiert gehalten,
    und opengl eher prozedural.



  • inp schrieb:

    die d3d api ist eher objektorientiert gehalten,
    und opengl eher prozedural.

    Ja aber ist denn nicht der modernere Ansatz die Objektorientiertheit? Sogar die neue PHP-Version hat auf OOP umgestellt. Warum ist dann OGL im akademischen bereich beliebter! Hat es irgendwelche Vorteile?

    MFG Mr_Funstick



  • es ist nativ lauffähig auf nicht-windows-plattformen.

    mfg,
    julian



  • prozeduraler code lässt sich sehr einfach in klassen einbauen. mit Dx is das ne qual



  • OGL ist meines Wissens auch bedeutent älter und

    wird von den Hardwareherstellern mehr oder weniger gemeinsam vorangetreiben während DirectX ausschließlich von Microsoft vorangetrieben wird.

    OGL ist abwärtskompatibel während DirectX mit jeder Major-Version komplett unterschiedliche Schnittstellen liefert.



  • darthdespotism schrieb:

    OGL ist abwärtskompatibel während DirectX mit jeder Major-Version komplett unterschiedliche Schnittstellen liefert.

    Nein - dank dem COM-Interface ist DX abwärtskompatibel. Nur DX10 ist nicht mehr abwärtskompatibel zu den Vorgängerversionen.



  • DirectX vs. OpenGL:

    90% der 3D-Spiele wurden mit DirectX geschrieben(&c++)
    10% der Programme/Spiele wurden mit OpenGL geschrieben(&c++).

    OpenGL bietet mehr funktionen, ist plattformunabhängig aber hat nen schwierigeren Grad.
    AutoCAD wurde als Beispiel mit OpenGL geschrieben.

    DirectX hingegen ist glaube ich nur für Windows(keine Ahnung, hab ich in einem anderem Forum gelesen), ist aber dafür einfacher zu erlernen.

    P.S.: ich weiß,dass OpenGL keine Programmiersprache ist, ich sag es nur immer 😕
    P.S.: OpenGL = Grafikbibliothek xD



  • XP^ schrieb:

    DirectX vs. OpenGL:

    90% der 3D-Spiele wurden mit DirectX geschrieben(&c++)
    10% der Programme/Spiele wurden mit OpenGL geschrieben(&c++).

    Darum gehts hier nicht. Es geht drum was man in 1 Jahr leichter erlernen kann.



  • XP^ schrieb:

    DirectX vs. OpenGL:

    90% der 3D-Spiele wurden mit DirectX geschrieben(&c++)
    10% der Programme/Spiele wurden mit OpenGL geschrieben(&c++).

    OpenGL bietet mehr funktionen, ist plattformunabhängig aber hat nen schwierigeren Grad.
    AutoCAD wurde als Beispiel mit OpenGL geschrieben.

    DirectX hingegen ist glaube ich nur für Windows(keine Ahnung, hab ich in einem anderem Forum gelesen), ist aber dafür einfacher zu erlernen.

    P.S.: ich weiß,dass OpenGL keine Programmiersprache ist, ich sag es nur immer 😕
    P.S.: OpenGL = Grafikbibliothek xD

    Sowohl deine Prozentangaben als auch deine Aussage bezüglich des Schwierigkeitsgrades sind völlig aus der Luft gegriffen. Eigentlich ist die gängige Meinung die, dass in Direct3D der Einstieg schwieriger ist (vereinfacht gesagt der Code bis zum 1. drehenden Dreieck), viele fortgeschrittene Dinge dann jedoch leichter fallen.
    Aber da die Konzepte in beiden identisch sind, ist die Wahl im Grunde nur noch geschmackssache.



  • Blue-Tiger schrieb:

    XP^ schrieb:

    DirectX vs. OpenGL:

    90% der 3D-Spiele wurden mit DirectX geschrieben(&c++)
    10% der Programme/Spiele wurden mit OpenGL geschrieben(&c++).

    Darum gehts hier nicht. Es geht drum was man in 1 Jahr leichter erlernen kann.

    Die API ist doch ziemlich egal. Es geht ja nicht darum, das man 1 Jahr lang die API lernt. Man lernt 1 Jahr lang welche Theorien und Dinge hinter diesen 3D-Geschichten stecken. Ob man dafür OpenGL oder Direct3D nimmt ist doch furz egal. Man legt sich einfach auf etwas fest, da mag man noch so extrem dämliche Argumente ranziehen wie, welche API wie viele Spiele nutzen (was soll das überhaupt aussagen?). Aber die API ist doch wirklich scheiß egal und die API zu meistern dauert wohl höchstens 2 Wochen. Schwierig ist das sinnvolle zusammen bringen und zu verstehen.



  • @rüdiger: Tendentiell unterschreib ich deine Aussage, aber eine Frage hab ich gerade dennoch: wie viel hast DU schon mit DX und OGL gemacht?



  • OpenGL war für mich einfacher. Und wenn John Carmack OpenGL nimmt, dann nehm ich das auch. Warum sollen die Spiele nur unter Windows laufen?


  • Mod

    xBlackKnightx schrieb:

    OpenGL war für mich einfacher. Und wenn John Carmack OpenGL nimmt, dann nehm ich das auch. Warum sollen die Spiele nur unter Windows laufen?

    JC nimmt nun aber d3d und er ist damit zufrieden und behauptet selbst kein verfechter von ogl/d3d zu sein, sondern dass er nimmt was gerade praktisch ist.



  • Mr_Funstick schrieb:

    inp schrieb:

    die d3d api ist eher objektorientiert gehalten,
    und opengl eher prozedural.

    Ja aber ist denn nicht der modernere Ansatz die Objektorientiertheit? Sogar die neue PHP-Version hat auf OOP umgestellt. Warum ist dann OGL im akademischen bereich beliebter! Hat es irgendwelche Vorteile?

    MFG Mr_Funstick

    opengl ist eine freie schnittstelle, d3d microsoft lastig.
    wobei beide das selbe machen (eines in grün, eins in blau).

    eins sag ich dir gleich, wennst was gscheites coden willst musst sowieso eine abstraktionsschicht schaffen, um opengl und d3d als renderer zu verwenden (austauschbar zur laufzeit zb).

    aber so zum einlernen kannst dir eins von beiden aussuchen ( wie gesagt, das selbe in grün/blau)



  • this->that schrieb:

    @rüdiger: Tendentiell unterschreib ich deine Aussage, aber eine Frage hab ich gerade dennoch: wie viel hast DU schon mit DX und OGL gemacht?

    Ich hab nur ab und an mal mit OGL gespielt. Habe keinen Rechner der DX kann :p (Ich habe mir einfach mal die Freiheit rausgenommen und bin davon ausgegangen, das man mit DX auch bunte bildchen erstellen kann, wenn du darauf hinaus willst)



  • rüdiger schrieb:

    this->that schrieb:

    @rüdiger: Tendentiell unterschreib ich deine Aussage, aber eine Frage hab ich gerade dennoch: wie viel hast DU schon mit DX und OGL gemacht?

    Ich hab nur ab und an mal mit OGL gespielt. Habe keinen Rechner der DX kann :p (Ich habe mir einfach mal die Freiheit rausgenommen und bin davon ausgegangen, das man mit DX auch bunte bildchen erstellen kann, wenn du darauf hinaus willst)

    Anhand deiner Wortwahl und der Tatsache das du etwas idealisiert hast konnte ich schließen, dass du wenig bis garkeine praktische Erfahrung mit 3D-Programmierung hast. Ich kann dir versichern: Selbst wenn du alle Konzepte theoretisch beherrscht, wirst du immernoch ein bißchen länger als 2 Wochen brauchen um solche komplexen APIs zu meistern.
    Sollte jetzt kein Flame sein... naja, du weißt schon wie ichs gemeint hab. 🙂



  • @this->that
    Muss man die komplette API meistern?

    Selbst wenn macht das meistern der API wohl eher den kleineren Teil aus.


Anmelden zum Antworten