Einfache Grafikbibliothek gesucht



  • Hallo,

    ais absoluter Anfänger in C++ hätte ich gleich eine Frage an die erfahrenen Hasen: Gibt es eine einfache Möglichkeit, einfache geometrische Objekte im dreidimensionalen Raum zu zeichnen (und wenn möglich dann noch ein wenig das entstandene Gebilde mit der Maus hin- und herdrehen zu können?). In meinem Fall wären es ein paar Ultraschallsensoren, welche einen Öffnungswinkel von +-120° in der Vertikalen und +-60° in der Horizontalen haben. Wenn nun die Information kommt, dass ein Objekt z.B. in 2m Abstand erkannt wurde, soll ein Kugelausschnitt ähnlich http://www.matheplanet.com/matheplanet/nuke/html/matroid/mi/artikel4_13.gif
    mit dem entsprechenden Radius erscheinen.

    Danke für eure Hilfe,

    nierth



  • Einfach ist relativ. 😉

    Du kannst dir DirectX, oder OpenGL nehmen, da geht der geometrische Teil relativ einfach, da du da ganz einfach rotation usw auf ein Objekt anwenden kannst. Jedoch sind die beiden API's nicht gerade einsteigerfreundlich. Vor allem als Anfänger. Es lohnt sich aber auf jeden Fall, wenn du ansonsten auch noch was mit Grafik zu tun hast sich das mal anzuschauen.

    Wenn der geometrische Teil einfach gehalten ist, kannst du sowas normalerweise auch mit der OS - spezifischen Library machen. Unter Windows geht das recht gut imt der GDI oder auch GDI+..


  • Administrator

    Also ganz ehrlich, bevor man sich mit 3D Programmierung unter C++ beschäftigt, sollte man zuvor 1 - 2 Jahre die C++ Grundlagen gelernt haben. Sonst läufst du immer wieder in Probleme, welche dich unnötig Zeit kosten.

    Danach allerdings, ist es "relativ einfach" sowas umzusetzen, sofern du nich noch irgendwelche Spezialeffekt verlangst oder möchtest, dass es gut aussieht 🙂
    Für sowas kannst du dann eine 3D Engine holen. Aber um die überhaubt zu verstehen und vernünftig anwenden zu können, brauchst du die entsprechenden C++ Grundlagen 😉

    Grüssli



  • Dravere schrieb:

    Danach allerdings, ist es "relativ einfach" sowas umzusetzen, sofern du nich noch irgendwelche Spezialeffekt verlangst oder möchtest, dass es gut aussieht 🙂
    Für sowas kannst du dann eine 3D Engine holen.

    Und genau dafür könnte eventuell die Irrlicht Engine helfen. Wenn man sich ansieht, was Cracks da rausholen, wahnsinn.



  • XHansWurstX schrieb:

    Wenn man sich ansieht, was Cracks da rausholen, wahnsinn.

    Eben, Cracks. Es handelt sich hier aber um C++-Anfänger.

    Es hat wirklich keinen Wert, in C++ als erstes grafisch zu programmieren wollen. Zumindest ein wenig Grundlagenwissen sollte man schon besitzen, sonst versteht man gar nichts, was einen nicht gerade motiviert. Und darum herum kommt man sowieso nicht, wenn man sich ernsthaft mit der Thematik befassen will.

    Ansonsten kann man sich auch überlegen, wenn es nur um Grafik geht, eine andere, "einsteigerfreundlichere" Sprache zu wählen, beispielsweise BlitzBasic oder C# mit XNA.



  • hi,

    ich finde dieses buch ganz gut für den einstieg mit spieleprogrammierung
    http://www.amazon.de/C-für-Spieleprogrammierer-Heiko-Kalista/dp/3446226788/ref=sr_1_1?ie=UTF8&s=books&qid=1226168275&sr=8-1

    Es ist so aufgebaut das du bei 0 anfängst und dann alle basics lernst und am Ende mit der STL (2D-Grafik-Engine) ein Mini-Game entwickelst.

    Da hast du den Spagat den du vermutlich suchst, aber ich bin der meinung das du spiele-programmierung erstmal zurückstellen solltest. lern erstmal die sprache, dein werkzeug, richtig kennen und bekomm sicherheit in ihr.

    du wirst nämlich garantiert nicht 1 woche das buch lesen und dann mal eben alles verstanden haben und anwenden können.......



  • asdfasdfds schrieb:

    Es ist so aufgebaut das du bei 0 anfängst und dann alle basics lernst und am Ende mit der STL (2D-Grafik-Engine) ein Mini-Game entwickelst.

    Du meinst wohl SDL... 😉

    Ich weiss nicht, ob das so gut ist. Meines Erachtens bringt es mehr, wenn man für die Grundlagen ein Buch über reines C++ liest. Ich kann mir gut vorstellen, dass Bücher, welche C++ nur als Mittel zum Zweck behandeln, viele wichtige Dinge unterschlagen, die für die 2D-Programmierung am Anfang noch irrelevant sind. Gerade wenn einem SDL - eine C-Bibliothek - beigebracht wird, hält sich das Lernen der Sprache C++ ziemlich sicher in Grenzen.

    Auf Dauer kann das aber nicht gut gehen, zumal man wahrscheinlich relativ schnell den Anspruch hat, komplexere Dinge zu programmieren. Dann kommt man sowieso nicht mehr darum herum, neue Techniken kennenzulernen. Besser, man versucht gleich von Anfang an die Sprache richtig zu lernen.



  • Nexus schrieb:

    asdfasdfds schrieb:

    Es ist so aufgebaut das du bei 0 anfängst und dann alle basics lernst und am Ende mit der STL (2D-Grafik-Engine) ein Mini-Game entwickelst.

    Du meinst wohl SDL... 😉

    Ich weiss nicht, ob das so gut ist. Meines Erachtens bringt es mehr, wenn man für die Grundlagen ein Buch über reines C++ liest. Ich kann mir gut vorstellen, dass Bücher, welche C++ nur als Mittel zum Zweck behandeln, viele wichtige Dinge unterschlagen, die für die 2D-Programmierung am Anfang noch irrelevant sind. Gerade wenn einem SDL - eine C-Bibliothek - beigebracht wird, hält sich das Lernen der Sprache C++ ziemlich sicher in Grenzen.

    Auf Dauer kann das aber nicht gut gehen, zumal man wahrscheinlich relativ schnell den Anspruch hat, komplexere Dinge zu programmieren. Dann kommt man sowieso nicht mehr darum herum, neue Techniken kennenzulernen. Besser, man versucht gleich von Anfang an die Sprache richtig zu lernen.

    Ich finde das Buch nicht schlecht. Ich habe auch damit angefangen. Im übrigen geht es in dem Buch wirklich um die Grundlagen der Programmierung und hat (bis auf die Beispiel) nicht wirklich was mit Spieleprogrammierung zu tun. (Da werden halt Raumschiffe anstatt Früchte genommen, um Vererbung zu erklären. ;))
    Der Schluss ist ja nur dazu da, um zu zeigen, dass das, was man gelernt hat auch wirklich brauchen kann.

    Nichtsdestotrotz sollte man das Buch nicht als Gottes letzter Schluss anschauen. Aber nach dem Buch kann man sich auch getrost an "Die C++ Programmiersprache" wagen. (Nach dem man selber ein wenig Praxis gehabt hat geht das recht gut). Und dann hast du das volle Spektrum, was du mit C++ alles machen kannst.



  • kann sein dass ich mich ein wenig missverständlich ausgedrückt habe:
    Ich habe zwar von C++ noch keine Aknung, aber wir programmieren seit dem ersten Semester an der Uni immer wieder in C, darüber hinaus kann ich mit Java umgehen.
    Zur Not tut es auch eine simple 2D Zeichnung, dann geht es nur noch um Kreissegmente welche zu zeichnen sind.



  • @ drakon:
    Okay, dann war das vielleicht ein bisschen ein Vorurteil. Ich dachte halt, das Buch würde Grafikprogrammierung ins Zentrum rücken und C++ dabei vernachlässigen.

    @ nierth:
    Was willst du denn nun genau? So schnell, schnell wirst du in C++ keine 3D-Grafik zeichnen können. Wie gesagt wären da schon grundlegende Kenntnisse der Sprache nötig.

    Aber bist du überhaupt sicher, dass du das in C++ tun willst? Wenn du bereits ein wenig C und Java kannst, wären diese Sprachen vielleicht eher geeignet.



  • Also am schnellsten hast du (unter Windows) direkt mit der WinAPI was auf in ein Fenster gezeichnet.
    - Fenster erstellen
    - GDI hervornehmen und zeichnen

    z.B hier:
    http://pronix.linuxdelta.de/C/win32/win32_6.shtml



  • In Java wäre es ebenso einfach möglich.

    Einfach ein JFrame ableiten, die Zeichenfunktion überladen und draufloszeichnen. Die Tutorials die der API beiliegen sind eigentlich alle sehr simpel.

    3D habe ich bisher nur mit OpenGL per SDL (mit GL-Lib) oder Qt gemacht, der Aufwand ist bei beiden gleich, da man am Ende eh nur OpenGL-Funktionen aufruft und das Framework nur zur Initialisierung dient. Und die kann man eh meist 1:1 aus Tutorials übernehmen wenn man nur "mal eben" was zeichnen will.



  • Nexus schrieb:

    XHansWurstX schrieb:

    Wenn man sich ansieht, was Cracks da rausholen, wahnsinn.

    Eben, Cracks. Es handelt sich hier aber um C++-Anfänger.

    Ansonsten kann man sich auch überlegen, wenn es nur um Grafik geht, eine andere, "einsteigerfreundlichere" Sprache zu wählen, beispielsweise BlitzBasic oder C# mit XNA.

    Na und? Er hat doch Recht. Cracks holen nunmal das meiste aus den Dingen, die man ihnen serviert. Heißt ja nicht gleich daß jeder andere sich mit BlitzBasic begnügen muß. Man kann eben schön sehen, was machbar ist.



  • community schrieb:

    Na und? Er hat doch Recht. Cracks holen nunmal das meiste aus den Dingen, die man ihnen serviert. Heißt ja nicht gleich daß jeder andere sich mit BlitzBasic begnügen muß. Man kann eben schön sehen, was machbar ist.

    Klar kann man es, dagegen habe ich auch nichts. In dem Teil, den du beim Zitieren weggelassen hast, habe ich ja noch geschrieben, dass es keinen Wert habe, in C++ grafisch zu programmieren, bevor man wenigstens die Grundlagen der Sprache beherrsche. Das "ansonsten" war eher für jene gedacht, die sich nicht auf C++ einlassen wollen.



  • Also ich würde für so eine Anwendung ganz klar OpenGL verwenden.
    Irgendwelche Engines erleichtern einem hier wohl nichts - eher das Gegenteil.


Anmelden zum Antworten