FAQ: Modernes OpenGL mit OpenGL 3.x



  • Gut gemacht 👍
    Ist GL3W plattformunabhängig (ich glaube schon aber bin mir nicht sicher)? Und kennst du ein Tut, wo man lernen kann, wie man einen Rendercontext auf einem Mac oder einem Linux machen kann?



  • edit:
    Wer suchet der findet 😃

    Und ja, GL3w ist XPlatform. Bzw es ist so, dass xgl/wgl Funktionen gar nicht vorhanden sind. Die muss man selber laden. Aber das ist das kleinste Problem.
    Besser als GLew ist es aber alle mal.



  • Hab mich mit GL3 noch nicht beschäftigt, aber wenn das ganze fixed function Zeug raus ist, ist GL3 dann noch abwärtskompartibel? Wird OpenGL ❤ Code vom Treiber irgendwie übersetzt?



  • Ja. Du kannst 3 verschiedene Context erzeugen:

    Compabilityy
    Core
    Forward Compatible

    Die Namen dürften selbst erklärend sein.



  • EOutOfResources schrieb:

    kennst du ein Tut, wo man lernen kann, wie man einen Rendercontext auf einem Mac oder einem Linux machen kann?

    Nahezu genauso wie mit Windows nur dass das Fenster unter Linux eben per X11-Api erzeugt wird.
    Schau Dir mal die ersten Nehe-Beispiele an, da gibt's doch Downloads fuer alle moeglichen Plattformen...



  • hellihjb schrieb:

    EOutOfResources schrieb:

    kennst du ein Tut, wo man lernen kann, wie man einen Rendercontext auf einem Mac oder einem Linux machen kann?

    Nahezu genauso wie mit Windows nur dass das Fenster unter Linux eben per X11-Api erzeugt wird.
    Schau Dir mal die ersten Nehe-Beispiele an, da gibt's doch Downloads fuer alle moeglichen Plattformen...

    Die Context Erzeugung ist bei OpenGL3 leicht anders. Nehe ist veraltet leider.



  • Besser als GLew ist es aber alle mal.

    Was ist so schlecht an Glew?



  • Frau Holle schrieb:

    Besser als GLew ist es aber alle mal.

    Was ist so schlecht an Glew?

    Es fehlen #defines, es erzeugt Warnungen nach der Context-Erzeugung.



  • Und glew funktioniert nur mit dem Compatibility-Modus, da es intern glGetString(GL_EXTENSIONS) verwendet, um die unterstützten Extensions rauszufinden. Dieser spezifische glGetString()-Aufruf ist als veraltet markiert (nicht glGetString() selbst). Richtig wärs, glGetStringi() zu verwenden.

    Im Übrigen kann man auch http://www.glfw.org/ als Alternative zu SDL 1.3 einsetzen; GLFW 2.7 unterstützt auch OpenGL 3.x Contexterzeugung.



  • Es funktioniert schon mit einem Core-Context. Allerdings kommt wie gesagt die Warnung. Die Treiber sind da sehr kulant was glGetString angeht. Aber es sind auch Funktionen falsch benannt. So haben alle glFramebuffer-Funktionen noch das EXT hinten dran, was einfach falsch ist. Es ist im Core. Erbsenzählerei? Vielleicht. Aber wenn sich das Ding nicht an Standards hält, dann is das ein Problem.



  • Mir ist das ganze Ding um die Ohren geflogen, weil glGetString(GL_EXTENSIONS) einen Nullpointer zurückliefert. Ich verwende die 270.41.06 NVidiatreiber, und ein Forward Compatible Context.
    Oh, und ein Nachteil hat gl3w: da die S3TC/DXT-Formate nie in den Kern aufgenommen wurden, sind sie nicht #definiert, das muss man selbst nachziehen. Sind aber nur 4 Defines, was das ganze leicht fixbar macht.



  • 4 defines sind nicht wild. Die x/wgl Funktionen fehlen auch. Allerdings ist es die einzig wirklich brauchbare OpenGL3 Lib für diesen Zweck atm.



  • Die x/wgl-Funktionen sind idR aber eher nur im Sourcecode von Libraries wie SDL und GLFW brauchbar. Direkt verwendet man sie kaum, am ehesten für PBuffer zB.



  • Soll der Thread hier eig. gepinnt oder in die Spiele-FAQ verschoben werden? Ich kann's zwar selbst nicht machen, würd aber dann 'nen Mod/Admin anhauen 🙂
    Wär ja schade, wenn er untergehen würde.



  • GPC schrieb:

    Soll der Thread hier eig. gepinnt oder in die Spiele-FAQ verschoben werden? Ich kann's zwar selbst nicht machen, würd aber dann 'nen Mod/Admin anhauen 🙂
    Wär ja schade, wenn er untergehen würde.

    Auf jeden Fall.
    Ich hatte diesen Beitrag vor einiger Zeit entdeckt, aber keine Zeit gehabt mich damit zu beschäftigen. Jetzt musste ich schon danach suchen.
    (Und ich wusste den Titel nicht mehr)



  • GPC schrieb:

    Soll der Thread hier eig. gepinnt oder in die Spiele-FAQ verschoben werden? Ich kann's zwar selbst nicht machen, würd aber dann 'nen Mod/Admin anhauen 🙂
    Wär ja schade, wenn er untergehen würde.

    Bitte nur pinnen, denn OpenGL hat ja nicht zwangsläufig etwas mit Spielen zu tun.

    OpenGL kann man auch ganz gut für ernsthafte 3d Visualisierungen gebrauchen und dann ist das anpinnen im Forum Grafikprogrammierung schon richtig und Spiele-FAQ eher fehl am Platz.


  • Mod

    ins FAQ zu verschieben ist eher eine bestraffung fuer einen thread, mir scheint es als ob dort seltener geschaut wird als das leute hier die suche verwenden.

    sticki fuer die threads, wie damals fuer den guten terrain rendering thread usw. will ich eher nicht vergeben, weil es die ersten x-zeilen mit selten gelesenem zeug "zumuellt" (wenn ich das hier sticki mache, muesste ich der fairheit halber sehr viele andere threads sticky machen).

    ich werde einen thread sticki machen mit indices die auf sowas wie das hier verlinken.



  • Hi,

    ist da irgendein Sinn vorhanden, dass in GL3w kein GL_QUAD zum Zeichnen definiert ist?



  • Und was ist jetzt der Unterschied zu OpenGL 4.0?



  • Andreas XXL schrieb:

    ist da irgendein Sinn vorhanden, dass in GL3w kein GL_QUAD zum Zeichnen definiert ist?

    Vielleicht, weil es seit OpenGL 3 nicht mehr unterstützt wird. Hast du dir mal die Spec. angeschaut? QL_QUAD ist departched. Und das schon seit ein paar Jahren --> also einer Ewigkeit für Softwareentwickler.

    Keine OpenGL >= 3 Grafikkarte muss GL_QUAD unterstützten. Verwendest du es heutzutage noch dann ist es nicht Garantiert, dass dein Programm auf einen aktuellen Rechner läuft.


Anmelden zum Antworten