Was ist aktuell?



  • Hallo, ich wöllte mir gerne mal OpenGl 3.2 Core beibringen. Das Problem:
    Ich kenne mich mit OpenGl kaum aus, das letzte was ich gemacht hab strotzte nur so von glBegin() ... glEnd().

    Bei der Suche nach Tutorials ist immer wieder das Problem, dass Header eingebunden werden, von denen ich nicht weiß, ob das irgendein Framework ist oder zu Opengl gehört. Schließlich muss ja irgendwie ein Fenster und der Kontext erstellt werden.

    Was ich nun gerne hätte wäre eine Liste von Schlagworten, die ich einfach nachsehen kann, welche aktuell sind.

    Will nicht einer mal ein GUTES opengl Buch schreiben ? ^^



  • Einigermassen aktuell (OpenGL 3.3) ist:
    Learning Modern 3D Graphics Programming Through OpenGL





  • Ich habs mir den 3.x spezifischen Initialisierungsteil über http://sites.google.com/site/opengltutorialsbyaks/introduction-to-opengl-3-1---tutorial-01 angeeignet. Im 3.2 Tutorial sieht man den Unterschied wenn man auf glew verzichtet und von Hand die Funktionen holt. Ist aber wirklich nicht viel mehr als ein Minimalbeispiel rauszuholen.

    Ne Befehlsüberischt gibts es z.B. hier: http://www.khronos.org/files/opengl-quick-reference-card.pdf oder auch direkt die Spec.

    Wenn dich interessiert was beim OpenGL Core Profile an alter Funktionalität rausgeflogen ist, guckst du am besten in die Spec von 3.2 (oder neuer?), da ist hinten ein Anhang mit deprecated Funktionen.



  • Warum sind eigentlich immer alle so scharf darauf, unbedingt mit der neusten und tollsten OpenGL-Spezifikation anzufangen?
    Ich sehe einen grossen Vorteil von OpenGL (gegenueber zB DirectX) darin, dass man gerade als Anfaenger per glVertex ruckzuck was auf den Bildschirm bekommt.
    Die Funktionsweise von zeitgemaesseren Methoden kann man sich auch noch aneignen nachdem man die Grundlagen verstanden hat - und man versteht dann vielleicht sogar, warum man diese Methoden eingefuehrt hat...

    Auf der anderen Seite sehe ich zwar ein, dass die Treiber-Entwickler keine Lust haben, sowas weiterhin zu unterstuetzen aber solang man unter Windows immernoch auf einer OpenGL 1.1 Lib aufsetzt wird sich da wohl trotz aller Deprecation-Empfehlungen nichts dran aendern...



  • Naja, eigentlich ist die aktuelle Version von OpenGL gar nicht so schwer zu verstehen - das Problem ist nur, dass es so wenig gute Literatur dazu gibt.
    So langsam kommen aktuelle Tutorials (die besten haben dot und inter2k3 schon verlinkt) und Bücher, aber lange Zeit hatte ja selbst das RedBook nur die alten Sachen drin. Wieso hier nicht mehr Aufwand betrieben wird, damit Anfänger (und potentiell spätere "professionelle" Benutzer) OpenGL wählen, ist mir ein Rätsel...



  • @hellihjub: Es ist imho nicht mehr zu empfehlen einem Neuling in der Grafikprogrammierung eine Fixed Function Pipeline vor Shadern zu erklären. Selbst hier an der Universität wurde der Lehrbetrieb bereits umgestellt.

    BTW: Die neue OpenGL SuperBible (5th Edition) finde ich diesbezüglich sehr aktuell und gut geschrieben.

    MfG SideWinder



  • Die SuperBible habe ich hier.

    ISt aber imo NICHT gut für Einsteiger.
    Viele Sachen sind in irgendwechen Headern versteckt damit es für Beginner einfacher aussieht.

    triangleBatch.Begin(GL_Triangles, 3)
    ...
    triangleBatch.End()
    

    Sieht toll aus, aber was zur Hölle ist triangleBatch?
    Auch der intgrierte ShaderManager ist meiner Meinung nach nicht das, was ein Anfänger haben sollte.

    Eben das was Hellihjb anspricht, die "schnellen Erfolge", welche durch die vorgefertigten Klassen garantiert werden, sind für mich eher demotivierend.

    Ich sehe in den Quellcode und verstehe nicht, was Shadermanager und irgendwelche Batch-Teile tun.

    Das demotiviert mich enorm.
    Ich habs lieber von Grund auf, auch wenns dann etwas länger dauert.
    Von daher finde ich das BlueBook überhaupt nicht gut .



  • shisha schrieb:

    Die SuperBible habe ich hier.

    ISt aber imo NICHT gut für Einsteiger.
    Viele Sachen sind in irgendwechen Headern versteckt damit es für Beginner einfacher aussieht.

    triangleBatch.Begin(GL_Triangles, 3)
    ...
    triangleBatch.End()
    

    Sieht toll aus, aber was zur Hölle ist triangleBatch?
    Auch der intgrierte ShaderManager ist meiner Meinung nach nicht das, was ein Anfänger haben sollte.

    Eben das was Hellihjb anspricht, die "schnellen Erfolge", welche durch die vorgefertigten Klassen garantiert werden, sind für mich eher demotivierend.

    Ich sehe in den Quellcode und verstehe nicht, was Shadermanager und irgendwelche Batch-Teile tun.

    Das demotiviert mich enorm.
    Ich habs lieber von Grund auf, auch wenns dann etwas länger dauert.
    Von daher finde ich das BlueBook überhaupt nicht gut .

    Es ist doch relativ einfach. Wenn jemand absoluter Beginner ist müsste man ihm nun erstmal erklären wie man shader schreibt (sprich z.B. GLSL beibringen), wie man die shader erstellt und kompiliert, wie man sie linkt etc. etc.
    Dazu kommt dann dass erklärt werden müsste was VBOs, VAOs etc. sind und wie man sie erstellt, mit Daten füttert, anwendet.
    Und alles nur, um erstmal ein simples Dreieck auf den Schirm zu bekommen.
    Wäre ein wenig zuviel verlangt vom Anfänger sich erstmal 200 Seiten durchzulesen bis er mal das erste "hello word" programmieren kann.
    Daher werden eben stock-shader angeboten, einige Helferklassen usw um eben erstmal etwas auf den Schirm zu bekommen und dann kann man Schritt für Schritt die Konzepte erklären.

    Wenn du wissen möchtest was triangleBatch ist, dann schauste n paar Zeilen höher und stellst fest: Aha, es ist ein Objekt vom Typ GLBatch.
    Dann schaust du in GLBatch.h und GLBatch.cpp und kannst dir alles in Ruhe anschauen. Wird aber im Normalfall ein Anfänger nicht machen, weil er von dem code nichts verstehen würde, und zu diesem Zeitpunkt auch nicht muss.

    Deine Aussae:

    shisha schrieb:

    Ich sehe in den Quellcode und verstehe nicht, was Shadermanager und irgendwelche Batch-Teile tun.

    belegt das doch bestens. Du hast ja die Möglichkeit dir den source-code vom ShaderManager, GLBatch usw anzuschauen, wirst aber wahrscheinlich wenig davon verstehen. Lies das Buch und du wirst nach und nach Aha-Erlebnisse haben 😃



  • inter2k3 schrieb:

    Es ist doch relativ einfach. Wenn jemand absoluter Beginner ist müsste man ihm nun erstmal erklären wie man shader schreibt (sprich z.B. GLSL beibringen), wie man die shader erstellt und kompiliert, wie man sie linkt etc. etc.
    Dazu kommt dann dass erklärt werden müsste was VBOs, VAOs etc. sind und wie man sie erstellt, mit Daten füttert, anwendet.
    Und alles nur, um erstmal ein simples Dreieck auf den Schirm zu bekommen.

    glBegin()/glEnd() schön und gut, damit kann ein Anfänger tatsächlich sehr schnell und einfach etwas auf den Bildschirm bringen. Allerdings seh ich da zwei Probleme. Erstens: Der Anfänger kommt damit nicht weit. Sobald er mehr will als ein paar Dreiecke malen ist das ganze Programmiermodell hinfällig. Man kann also drüber streiten inwiefern es sinnvoll ist das überhaupt erst zu lernen wenn man es stattdessen auch gleich ordentlich lernen könnte (Anfänger schaffen es auch irgendwie Direct3D zu lernen wo ihnen nix andres übrig bleibt). Und Zweitens zeigt ein großer Teil des Materials zu OpenGL was so rumliegt nur den Immediate Mode. D.h. ein großer Teil der Anfänger wird gar nicht darüber in Kenntnis versetzt dass das was sie gerade gelernt haben in der Praxis unbrauchbar ist. Und speziell darum finde ich dass es sehr wichtig ist Anfänger auf Material hinzuweisen welches "richtiges" OpenGL behandelt.



  • Da bin ich absolut deiner Meinung dot.
    Es handelt sich wohl um ein kleines Missverständnis.

    Es ging um das relativ neue und aktuelle Buch "OpenGL SuperBible 5th Edition", das nahezu ausschliesslich OpenGL 3.3 core-profile lehrt.

    Das ist auch gut so und so sollte es sein.
    Das unvermeidbare Problem ist natürlich jetzt, dass der Anfänger selbst für ein simples Dreieck ("hello word") shader nutzen muss, VBOs und VAOs nutzen muss etc.
    Und genau hierfür stellt der Autor vorgefertigte shader und Helferlein zur Verfügung, damit der Anfäner nicht erstmal 200 Seiten durchlesen muss um das erste Programm zu schreiben.

    shisha bemängelte das allerdings, da er lieber alles verstehen möchte und nicht auf irgendeine bereitgestellte lib zurückgreifen möchte.
    Daher hab ich ihm versucht zu erklären, warum es durchaus sinnig ist, trotzdem erstmal diese Helferlein zu nutzen.



  • Ah ok, dann sind wir ja einer Meinung 😉


Log in to reply