Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 09, 2025 04:52

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 00:04 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
Hallo ...

in den letzten Wochen wird hier ständig von OpenGL 3 geschrieben.
Kann mir jemand kurz erläutern, was das genau ist bzw was der Unterschied zum bisherigen ist?
Was fällt weg bzw soll man zukünftig nicht mehr benutzen?

Wäre schön zu wissen, was da auf mich zukommt.

Gruss Jens


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 08:55 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Mit der Version 3 wurde OpenGL vor allen erst einmal ordentlich aufgerauemt und eine neue Architektur eingefuehrt. Dadurch wurden eine ganze Ecke an Funktionen rausgeschmissen und das Ganze Rueckt ein wenig naeher an DX. Spaeter kamen dann noch einige neue GPU Features wie etwa Geometry Shader und OpenCL Support.

Wegefallen sind vor allen Dingen solche Sachen wie zum Beispiel glBegin/glEnd die eh schon keine grosse Bedeutung mehr hatten.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 13:18 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
Danke für die Antwort.
Zitat:
Mit der Version 3 wurde OpenGL vor allen erst einmal ordentlich aufgerauemt und eine neue Architektur eingefuehrt. Dadurch wurden eine ganze Ecke an Funktionen rausgeschmissen und das Ganze Rueckt ein wenig naeher an DX. Spaeter kamen dann noch einige neue GPU Features wie etwa Geometry Shader und OpenCL Support
Ich suche aber irgendwie eine praktischere/ konkretere Antwort (oder ein Hinweis auf einen erklärenden Artikel o.ä. ).
Was muss ich ändern, um von der alten Programmierweise (siehe Foren-Tutorials) zu dem OpenGL-3-Style zu kommen?

Zitat:
Wegefallen sind vor allen Dingen solche Sachen wie zum Beispiel glBegin/glEnd
Das ist ja das, was mich verwirrt. "glBegin/glEnd" funktioniert ja noch. :roll:

Wo liegt der praktische Unterschied?

p.s.: ich gehe mal davon aus, dass das bestimmt auch andere interessiert. hoffe ich.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 13:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Um OpenGL3 zu nutzen, musst du einen speziellen Kontext anfordern. Will heißen, wenn du nichts besonderes gemacht hast, dann bekommst du nur einen OpenGL2 Kontext.

Dann gibt es OpenGL3 in Forward-Compatible (ohne glBegin/glEnd et. al.) und in Backward-Compatible (mit diesen). Dass du die trotzdem noch nutzen kannst, hängt also vermutlich damit zusammen, dass du keinen OpenGL3 Kontext bzw. keinen Forward-Compatible OpenGL3-Kontext hast.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 14:15 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
Auch so!
Nicht, dass ich das jetzt gleich machen werde, aber kann man das mit dem dglOpenGL.pas-Header auch machen? Und wann ja, wie?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 14:17 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Zitat:
in den letzten Wochen wird hier ständig von OpenGL 3 geschrieben.

Das liegt hauptsächlich an glAwesome und mir, denke ich.
Es sind hier auch noch einige ältere OpenGL-Entwickler unterwegs und das Wiki ist auch fast ausnahmelos noch nicht auf OpenGL-3-Stand.

Zitat:
das Ganze Rueckt ein wenig naeher an DX.

Das stimmt schon. Allerdings nicht im negativen Aspekt wie man betonen muss.
Wenn das Wort "DirectX" fällt, sind einige OpenGL "Fanatiker" möglicherweise abgeschreckt.

Zitat:
Ich suche aber irgendwie eine praktischere/ konkretere Antwort

Die konkrete Antwort ist, dass der Immediate Mode und die fixed Pipeline weggefallen sind.
Früher haben die Grafikkarten/Treiber die fixed Pipeline direkt in Hardware umgesetzt. Da gab es also auf der Grafikkarte ein Hardwaremodul für Lichter, eines für Multitexturing und so weiter. Irgendwann hat man aber festgestellt das Anzahl OpenGL-Einstellungen dadurch unglaublich groß ist. Man siehe zb. der Auswahl an Multitexturingmöglichkeiten. Trotzdem waren viele Dinge wie Normalmapping damit erstmal nicht möglich. Deshalb hat man das mit OpenGL 2.0 Shader eingeführt. Im Laufe der Zeit hat sich die Hardware so verändert, dass auch alle fixed Funktionen intern im Treiber mit Shadern umgesetzt werden. Parallel spezialisierte fixed-Hardware und Shader parallel auf der Grafikkarte ist ja natürlich eigentlich redundant und damit überflüssig. Allerdings bremst es das Programm aus und verkompliziert gleichzeitig enorm die Treiberentwicklung wenn intern der unglaubliche Wildwuchs an fixed Funktionen in Shadern übersetzt werden müssen. Deshalb hat man in OpenGL 3.0 viele Funktionen als "deprecated" deklariert und mit OpenGL 3.1 entfernt.
Der Immediate Mode wurde im Prinzip aus den gleichen Gründen entfernt: Er ist so langsam durch Treiberoverhead das man ihn eh nicht mehr verwenden sollte und er verkompliziert die Treiber enorm. Deshalb ist auch er geflogen.
Die API ist alle allgemeiner geworden. Langsame veraltete Techniken sind rausgeflogen. Die API wurde einfacher.
Viele moderne OpenGL Features zielen mehr oder weniger nur darauf ab, einfach die Anzahl OpenGL-Aufrufe zu reduzieren. Da ist der Immediate Mode natürlich Gift.

Zitat:
Was muss ich ändern, um von der alten Programmierweise (siehe Foren-Tutorials) zu dem OpenGL-3-Style zu kommen?

Veraltete Funktionen rauswerfen und konsequent auf OpenGL 3.3+ Core-Features aufbauen.
Tutorials zu OpenGL 3 gibt es genug:
  1. http://www.opengl-tutorial.org/beginners-tutorials/tutorial-2-the-first-triangle/
  2. http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/

Zitat:
Das ist ja das, was mich verwirrt. "glBegin/glEnd" funktioniert ja noch.

Jaein. Der Punkt ist, wenn man die gesamte Prä-OpenGL-3-Ära einfach aus den OpenGL Treibern entfernt hätte, würde kein altes Programm mehr nach einen Treiberupdate laufen. Deshalb gibt es zwei OpenGL Profile. Zum einen das "Core"-Profil, dass alle echten Features von OpenGL beschreibt und zum Anderen das "Compatibility"-Profil, unter welchen auch veraltete Funktionalität noch zugreifbar ist. Das "Compatibility"-Profil ist ohne Zutun erstmal automatisch aktiv, klar, sonst würde alte Software ja auch nicht mehr laufen, weil die Programmierer natürlich nicht das Profil aktivieren konnten, das es damals noch gar nicht gab. Das OpenGL "Compatibility"-Profil wird jedoch nicht mehr durch die eigentliche OpenGL Spezifikation beschrieben und ist nur eine Extension (ARB_compatibility).

Für den Umstieg gibt es mehrere Gründe. Zum Beispiel:
  1. Zukunftssicherheit. Irgendwann werden die Treiberentwickler die Unterstützung von ARB_compatibility beenden. Dann bleiben höchstens noch irgendwelche komische Wrapper etc. um Software zum Laufen zu bekommen.
  2. Performance. Die Funktionen wie der Immediate Mode werden ja schon länger nicht mehr empfohlen und waren technisch bedingt noch nie so Schnell wie die Alternativen. In Zukunft wird der Fokus der Treiberentwickler hier noch weniger liegen.
  3. Zukünftige Features werden nicht für "ARB_compatibility" ausgelegt sein.
Es ist also keine gute Idee die Entwicklung zu ignorieren.
Es ist eine gute Idee einen "Core"-Context zu erzeugen und dann entsprechend eine Exception zu bekommen, wenn man versehentlich versucht noch auf alte Funktionalitäten zuzugreifen.
Wie du ja auch schon festgestellt hast, bekommt man das sonst nämlich erstmal gar nicht mit.

EDIT:
Auch wenn es ja sonst im Wiki wie anfangs schon gesagt leider sehr mager mit OpenGL 3 aussieht, gibt es schon eine Liste, der noch verfügbaren Funktionen:
[url]http://wiki.delphigl.com/index.php/OpenGL3-Funktionsübersicht[/url]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 14:56 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
Zitat:
Das liegt hauptsächlich an glAwesome und mir, denke ich.
Ja, richtig. Es ist ja gut sowas anzusprechen.
Zitat:
Es sind hier auch noch einige ältere OpenGL-Entwickler unterwegs
Ja, ist nur die Frage, was Du mit "ältere" meinst? :mrgreen:
Zitat:
Veraltete Funktionen rauswerfen und konsequent auf OpenGL 3.3+ Core-Features aufbauen.
Die Tuts habe ich schon mal so überflogen. Für mich gab sich daraus, dass in der Hauptsache VBOs und Shader genutzt werden anstatt glBegin/glEnd. Sehe ich das richtig?

Ich habe aber noch keine -für mich verständliche Abhandlung- gefunden, die mir sagt, was veraltet und was neu ist. (Du hast da gerade ein Edit drin, guck ich mir gleich an)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 15:05 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
[url]http://wiki.delphigl.com/index.php/OpenGL3-Funktionsübersicht[/url]

Der Link ist interessant. => Alles was nicht in der List steht, muss ich aus meinem Code rauswerfen und anders lösen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 15:33 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Im Prinzip beschreibt es zu 98% aller Dinge die Beiden Worte "Immediate Mode" und "fixed Pipeline".
Statt desen sollte man halt Vertexbuffer und Shader einsetzen.
Aber Achtung: Auch bei Shadern muss man wieder vorsichtig sein, denn, wie schon geschrieben, gibt es die seit 2.0. Es gibt also auch prä-3-Shader. Deshalb am Anfang "#version 330" setzen und nicht veraltete Schlüsselwörter wie "varying" einsetzen, dann hat man "echte" OpenGL 3.3 Shader.
Aber Achtung mit der Liste! Einige Dinge sind nicht direkt ersichtlich.
Weggefallen sind zum Beispiel auch viele spezielle Texturmodes für bestimmte Farbkannäle. Eine relativ moderne sichere Quelle sind Tutorials mit expliziter 3.3 Kennzeichnung, OpenGL.org und der Standard.
Zu Texturen zum Beispiel der Standard: http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml
Für "Alphatexturen" beispielsweise passt man entweder den Shader selbst an oder ändert die Swizzle-Einstellungen.

Zitat:
Alles was nicht in der List steht, muss ich aus meinem Code rauswerfen und anders lösen.

Damit man nicht in Versuchung kommt, aus Schlamperei, Unwissen oder was auch immer:
Besser einen "Core"-Profil Context erstellen.
Ich wäre sonst zum Beispiel nie darauf gekommen, dass "glGetString(GL_EXTENSIONS)" veraltet ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 15:53 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
Zitat:
Damit man nicht in Versuchung kommt, aus Schlamperei, Unwissen oder was auch immer:
Besser einen "Core"-Profil Context erstellen.
Okay, da steht aber noch meine Frage offen, wie man das konkret macht. Gibt es bei dem dglOpenGl-Header einen Kniff?

Mit dem direkten Umschalten bei laufenden Projekten ist das immer etwas schwierig. Erst einmal muß man möglichst viel während der vollen Fahrt umstellen und dann den Context umstellen. Sonst läuft wahrscheinlich gar nichts mehr.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 16:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
OpenglerF hat geschrieben:
Es sind hier auch noch einige ältere OpenGL-Entwickler unterwegs und das Wiki ist auch fast ausnahmelos noch nicht auf OpenGL-3-Stand.


*hust* Du hast bearbeiten-rechte für’s wiki. Feel free to upgrade!

grüße,
Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 16:03 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Bei delphispezifischen Sachen kann ich dir leider nicht weiterhelfen.
Ich verwende GLFW3 in C++. Da gibt es einen Wert in der Initialisierungsstruktur den man setzen muss.

Natürlich muss man erstmal nach und nach migrieren, aber dann sollte man schon auch umstellen und nicht auf halben Weg aufgeben.


Zuletzt geändert von OpenglerF am Do Jan 16, 2014 16:07, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 16:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 588
Programmiersprache: C++
Wie man einen GL3-(Core-)-Kontext erstellt, ist sogar in unserem Wiki erklärt:
Tutorial OpenGL3 Zeichenkontext

Zu OpenGL3 allgemein hat mathias in letzter Zeit 'ne Menge Fragen gestellt. Falls du das nicht sowieso schon gelesen hast, lohnt sich vielleicht auch ein wenig Stöberei. Was sich in der Shadersprache GLSL (die man in OpenGL3 zwangsweise benutzen muss) im Wesentlichen geändert hat, habe ich hier aufgelistet.

Lord Horazont hat Recht. Vom schlecht reden wird das Wiki natürlich nicht besser. Ich würde mich auch freuen, wenn mehr Leute mitarbeiten würden. (Was jetzt nicht auf eine bestimmte Person bezogen ist.)

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 16:09 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Ich habe hier nichts schlecht geredet, sondern vermutet, warum hier bisher so wenig um OpenGL3 ging.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was ist OpenGL 3?
BeitragVerfasst: Do Jan 16, 2014 16:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wollte ich auch garnicht angedeutet haben :). Ich wollte nur darauf hinweisen, dass jeder hier nach kurzer Zeit Wikibearbeitrechte bekommt und keiner sich scheuen soll, daran mitzuwirken.

grüße :)

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 16 Queries | GZIP : On ]