Welche OpenGL Bibliothek ist gut zum einsteigen?



  • Moin moin
    Ich schreibe gerade ein Windows Programm, welches OpenGL benutzt.
    Bislang habe ich das Tao-Framework verwendet, hatte aber nur Probleme damit.
    Das Programm selber muss nur einen Drahtwürfel und ein paar Flächen darstellen.

    Die Frage:
    Gibt es andere Bibliotheken, welche einfacher/besser zu benutzen sind?

    Ich wollte auch glut ausprobieren, aber das wird (verbessert mich wenn ich falsch liege) seit ca. 2001 nicht mehr geupdated.

    Grüsse
    Chiller



  • Gibt es TAO nur für C# oder programmierst Du in einer anderen Sprache?

    Falls C#, OpenTK ist sehr gut:
    http://www.opentk.com



  • Ja, ich benutze nur C#, danke für die schnelle Antwort.
    Hoffentlich kann ich mit dieser Bibliothek endlich mal vernünftig arbeiten.
    Jedenfalls werd ich die Bibliothek gleich mal ausprobieren.

    Grüsse
    Chiller



  • Sorry den Doppelpost

    Ich habe nach dem umsteigen auf OpenTK haufenweise Fehler im Projekt, all diese Befehle findet er nicht mehr und vor allem die Propertys gibt nicht mehr...

    z.B. wenn man im TAO-Framework schrieb:

    Gl.glClearColor(0, 0, 0, 0);
    
    Gl.glEnable(Gl.GL_DEPTH_TEST);
    Gl.glDepthMask(Gl.GL_TRUE);
    
    Gl.glViewport(0, 0, glWindow_width, glWindow_height);
    
    Gl.glMatrixMode(Gl.GL_PROJECTION);
    Gl.glLoadIdentity();
    Glu.gluPerspective(45.0f, (double)glWindow_width / (double)glWindow_height, 0.01f, 5000.0f);
    Gl.glEnable(Gl.GL_CULL_FACE);
    Gl.glCullFace(Gl.GL_BACK);
    

    Dann gibt es in OpenTK schon mal die Änderung, dass man GL statt Gl schreiben muss. Aber z.B. Gl.GL_DEPTH_TEST wird zu was? Solche Sachen hab ich nicht rausgefunden und mich nur totgesucht...

    Wär froh wenn mir jemand helfen könnte evt mit Beispielcode.

    Grüsse
    Chiller



  • Chiller schrieb:

    Ich habe nach dem umsteigen auf OpenTK haufenweise Fehler im Projekt, all diese Befehle findet er nicht mehr und vor allem die Propertys gibt nicht mehr...
    [...]
    Dann gibt es in OpenTK schon mal die Änderung, dass man GL statt Gl schreiben muss.

    Was hast Du erwartet? OpenTK ist eine syntaktisch (leicht) andere Schnittstelle für OpenGL gegenüber dem TAO-Framework. Aber imho lohnt sich die Umstellung. Soweit ich das sehe sind aber alle Änderungen reine Fleißarbeit. Selbst bei einem großen Projekt sollte das in wenigen Stunden funktionieren, oder?

    Was waren denn ursprünglich Deine Probleme mit TAO?

    Chiller schrieb:

    Aber z.B. Gl.GL_DEPTH_TEST wird zu was? Solche Sachen hab ich nicht rausgefunden und mich nur totgesucht...

    GL.Enable(EnableCap.DepthTest);

    Es wundert mich ein wenig, dass Du für sowas suchen musst. Wir müssen im Jahr 2011 zum Glück nicht mehr mit einem lausigen Texteditor programmieren, sondern haben IntelliSense. Gerade in C# ist dieses Hilfsmittel enorm ausgereift und hifreich.

    Beispielprojekte finden sich auf der Seite von OpenTK reichlich. Bücher, wie die SuperBible, sind in C/C++ geschrieben, aber jedes Beispiel lässt sich doch einfach so adaptieren in einer mordernen IDE?!

    Wie gesagt, ich kann Deine Schwierigkeit nicht nachvollziehen.



  • Chiller schrieb:

    z.B. wenn man im TAO-Framework schrieb:

    Gl.glClearColor(0, 0, 0, 0);
    
    Gl.glEnable(Gl.GL_DEPTH_TEST);
    Gl.glDepthMask(Gl.GL_TRUE);
    
    Gl.glViewport(0, 0, glWindow_width, glWindow_height);
    
    Gl.glMatrixMode(Gl.GL_PROJECTION);
    Gl.glLoadIdentity();
    Glu.gluPerspective(45.0f, (double)glWindow_width / (double)glWindow_height, 0.01f, 5000.0f);
    Gl.glEnable(Gl.GL_CULL_FACE);
    Gl.glCullFace(Gl.GL_BACK);
    
    GL.ClearColor(0, 0, 0, 0);
    
    GL.Enable(EnableCap.DepthTest);
    GL.DepthMask(true);
    
    GL.Viewport(0, 0, glWindow_width, glWindow_height);
    
    GL.MatrixMode(MatrixMode.Projection);
    GL.LoadIdentity();
    
    //Glu.gluPerspective(45.0f, (double)glWindow_width / (double)glWindow_height, 0.01f, 5000.0f);
    //Glu existiert in OpenTK imho nicht. Folgender Code sollte dem entsprechen:
    float aspect_ratio = 1f * glWindow_width / glWindow_height;
    Matrix4 projection = Matrix4.CreatePerspectiveFieldOfView(45 * (float)Math.PI / 180.0f, aspect_ratio, 0.01f, 5000f);
    GL.MatrixMode(MatrixMode.Projection);
    GL.LoadMatrix(ref projection);
    
    GL.Enable(EnableCap.CullFace);
    GL.CullFace(CullFaceMode.Back);
    


  • Ahhh
    Ich kann dir sagen was mein Problem ist:
    Ich habe immer noch im Tao-Schema gedacht und nicht nach geguckt was die Funktionen jetzt benötigen.
    Aber wenigstens weiss ich jetzt wie ich neuerdings programmieren muss. Danke. 🙂

    Allerdings habe ich jetzt ein ganz anderes Problem, nämlich dass gar nix richtig angezeigt wird. irgendwie wird sogar die GUI falsch dargestellt...

    Beispiel:
    https://picasaweb.google.com/lh/photo/Vc1_LLhF1dA2NreR_b09lWlCAPZDikObS1AOz069KII?feat=directlink

    Der Menübar oben wird unten dran auch noch mal angezeigt und ist oben wie auch unten voll funktionsfähig... -.-

    Edit:
    Ich kriege jetzt auch noch eine Message Box (vermutlich von openTK da ich das nicht implementiert hab) mit dem Text: "No device or rendering context available."
    Was bedeutet das?

    Grüsse
    Chiller


Anmelden zum Antworten