Registriert: Do Sep 25, 2003 15:56 Beiträge: 7803 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nach 9 Monaten Arbeit an den Specs hat die Khronos Gruppe, verantwortlich für die OpenGL Weiterentwicklung, die Spezifikation für OpenGL3.1 veröffentlich. Dies kann einer Pressemeldung von Khronos entnommen werden.
Das neue Release zeichnet sich durch eine Verschlankung aus, welches dazu führt, dass eine Abwertskompatibilität zu OpenGL1 und 2 nur per ARB Extension verfügbar ist.
Erste Treiber für OpenGL3.0 sind bereits für NVIDIA, ATI uns S3 Chips verfügbar. GL3.1 will NVIDIA (siehe Ankündigung) und ATI mit der nächsten Treiberversion unterstützen.
Ein kurzer Auszug aus den Specs (danke an unseren User Philip):
- Alle als Deprecated makierten Funktionen sind aus dem Kern entfernt (Bye bye glBegin()) und in die Extension GL ARB compatibility ausgelagert.
Neue Funktionen:
- Support for OpenGL Shading Language 1.30 and 1.40.
- Instanced rendering with a per-instance counter accessible to vertex shaders (GL ARB draw instanced).
- Data copying between buffer objects (GL EXT copy buffer).
- Primitive restart (NV primitive restart). Because client enable / disable no longer exists in OpenGL 3.1, the PRIMITIVE RESTART state has become server state, unlike the NV extension where it is client state. As a result, the numeric values assigned to PRIMITIVE RESTART and PRIMITIVE RESTART INDEX differ from the NV versions of those tokens.
- At least 16 texture image units must be accessible to vertex shaders, in addition to the 16 already guaranteed to be accessible to fragment shaders.
- Texture buffer objects (GL ARB texture buffer object).
- Rectangular textures (GL ARB texture rectangle).
- Uniform buffer objects (GL ARB uniform buffer object).
- SNORM texture component formats.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
All dies betrifft aber selbstverständlich nur einen expliziten OpenGL3 kontext und nicht einen "normalen", oder? Also laufen alte Anwendungen immernoch wie gewohnt...?
Und wie nah sind die jetzt an DX10? Würde mich interessieren... Vorallem, da ich jetzt langsam ernsthafter Linux-Nutzer werde. Und die Wrapper für DX9 sind ja in Wine schon ziehmlich gut .
Gruß Lord 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 network • my 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
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Flash hat geschrieben:
Alle als Deprecated makierten Funktionen sind aus dem Kern entfernt (Bye bye glBegin())
Ich weiss nicht, aber irgendwie macht mich das traurig... Ist halt schade für die vielen Units, die ausschließlich mit glBegin arbeiten... muss ne Menge umgeschrieben werden. Naja, aber dafür sind ja auch tolle Dinge hinzugekommen, und glBegin war wirklich schon etwas antiquiert.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Nun. Entgegen der ursprünglichen Ankündigung von OpenGL 3.0 hat sich khronos dazu entschlossen die Kompatibilität zu bestehenden Anwendungen zu erhalten. Da es genügend Anwendungen gibt die nicht mehr weiter entwickelt werden. Wenn die also auf ein Mal alle den Dienst verweigern wäre, dann würde sich OpenGL damit nur einen ziemlichen Bärendienst erweisen. Und das Geschrei wäre noch lauter gewesen als es so schon war.
Entsprechend wurde in OpenGL 3.0 ein neuere aufwärtskompatibler Kontext eingeführt. Diesen gibt es zusätzlich zu dem bereits existierenden normalen 2.0 Kontext. In dem 2.0 Kontext werden offiziell keine neuen Features mehr eingebaut. Sondern das kommt alles in den neuen Kontext. Der neue Kontext muss natürlich auch anders erstellt. Wenn man den Kontext wie bisher erstellt, dann bekommt man nach wie vor nur einen 2.0 Kontext. Und dann ändert sich so spontan erst einmal gar nichts.
NVidia hatte allerdings auch angekündigt einige 3.0 Features in den 2.0 Kontext mit zu übernehmen. Das werden sie aber vermutlich nicht ewig machen.
Zum Erstellen eines 3.0+ Kontextes benötigt man die Erweiterungen WGL_ARB_create_context bzw GLX_ARB_create_context. Wenn man seinen Kontext mit SDL oder der Funktion CreateRenderingContext aus der dglOpenGL.pas erstellt bekommt man aber keinen neuen Kontext. Mit SDL ist es derzeit ziemlich unmöglich OpenGL 3.0+ zu benutzten. Und unter Delphi/Lazarus muss man selber Hand anlegen.
Alle Angaben natürlich nur unter der Vorraussetzung, dass ich das richtig verstanden habe. Die 3.0 Spezifikation fand ich etwas wirr und die 3.1 Spezifikation hatte ich mir noch nicht angesehen.
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Ich hab ein wenig in die Specs geguckt: Sektion "Primitive". Es gibt noch Punkte, Linien und Dreiecke - das wars schon. Manchmal sind aber Polygone nötig. Und der neue Kontext zwingt dazu, diese Polygone selber in Dreiecke zu zerlegen, bevor man sie zur Grafikkarte schickt. Intern muss ich sie allerdings als Polygone speichern, denn wenn der Anwender das Modell neu lädt, will er selbstverständlich seine Polygone wiederhaben.
Registriert: Di Dez 03, 2002 22:12 Beiträge: 2101 Wohnort: Vancouver, BC, Canada
Programmiersprache: C++
Traude hat geschrieben:
Ich hab ein wenig in die Specs geguckt: Sektion "Primitive". Es gibt noch Punkte, Linien und Dreiecke - das wars schon. Manchmal sind aber Polygone nötig. Und der neue Kontext zwingt dazu, diese Polygone selber in Dreiecke zu zerlegen, bevor man sie zur Grafikkarte schickt. Intern muss ich sie allerdings als Polygone speichern, denn wenn der Anwender das Modell neu lädt, will er selbstverständlich seine Polygone wiederhaben.
OpenGL lagert damit Arbeit an seine "Kunden" aus.
Zeichne einfach als TriangleFan, das tun soweit ich weiß sowieso die meisten Treiber auch.
Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
zum Glück schreib ich bei mir gerade eh alle Units auf VBOs um Nur an sich finde ich es trotzdem etwas hart, dass dem OGl Nutzer jetzt etwas mehr Arbeit aufgeladen wird, wenn er die neuen Features haben will. Wobei ich aber auf der anderen Seite auch sagen muss, dass es natürlich angebracht ist Steinzeitwerkzeuge wegzuschmeißen wenn man mit ner kleinen Einweisung auch ne Kettensäge benutzen kann. Immerhin habe ich bisher wenige Sachen in OpenGl als schwierig empfunden, da auch wenn man sich länger mit einem bestimmten Gebiet beschäftigen musste, die Lösung immer einleuchtend war (zumindest für mich) und sich auch flüssig einbinden lies. Ein Beispiel dafür sind zum beispiel Shader,FBOs und VBOs. Es wurde hier häufig gemeckert, dass sie so kompliziert seien, aber an sich kann man damit die Standart Rendering Pipeline bereits wunderbar nachbauen, wenn man sich an die Tutorials zu den Themen hält und ein wenig allgemeine Kenntnisse in der genutzten Programmiersprache hat, die man eh haben sollte wenn man mit einer Grafikschnittstelle arbeitet.
Als letztes möchte ich noch sagen, dass es nach wie vor nicht schlimm ist mit der 2.0version zu arbeiten, da die eigentlich auch schon viel leisten kann und die 3.0version meiner Meinung nach nicht soooo viel Überwältigendes bietet was man jetzt unbedingt in seine Projekte basteln muss um glücklich zu werden. Ich geh mal davon aus, das einige Leute hier so manchen neuen Krempel ausprobieren werden, aber das heißt ja nicht , dass man nicht auch einfach auf 2.0 weiter proggen kann, oder ist etwa geplant, das 2.0 komplett im Staub verpulvert?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Der 2.0er Kontext kann nicht einfach so entfernt werden. Denn der exisiert seit jahren, ist entsprechend etabliert und das wäre ein riesen Imageschaden, wenn die "alten" Sachen urplötzlich nicht mehr laufen würden. Der 2.0er Kontext wird allerdings auch nicht mehr weiterentwickelt. Sondern neue Techniken werden nur noch in dem 3.0+ Kontex eingebaut. Offiziell. Also 2.0 existiert weiterhin nur darf man nicht erwarten, dass man dort in 4 Jahren glSlang 1.9 benutzen kann. Und seinen wir mal ehrlich in der dgl kann man die Leute, die aktuell tatsächlich von 3.0 profitieren würden, ja vermutlich noch an einer Hand abzählen. Ist zu mindest meine Meinung.
Noch was am Rande. Alle diese Änderungen betreffen den 3.0+ Kontext und wenn man auf diesen umsteigt, dann sollte man sich bewusst sein, dass der sehr sehr viel dichter an der Hardware liegt als OpenGL es bisher getan hat. Und genau aus diesem Grund kennt 3.0+ dann eben nur noch Dreiecke. Und wurde mit dem 3.0er Kontext nicht auch die fixed Pipeline komplett als deprecated markiert? Also, dass man wirklich alles nur noch über Shader lösen sollte. Weil das für die Grafikkarten am besten ist (bzw der Treiber es eh schon so macht).
Mal was anderes:
Jetzt wo GL2 sowiso nicht mehr weiterentwickelt wird - wäre es nicht sinnvoll, OpenGL3 und aufwärts
in eine eigene dglOpenGL.pas zu packen?
Es wäre schon ein bisschen ungünstig, wenn man einen 3er-Kontext verwenden will, aber alle Funktionen
seit dunkelsten GL-Anfängen im Header hat.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Hmm... Warans vorschlag klingt für mich garnicht so schlecht. Sollte zumindest mal ernsthaft in Erwägung gezogen werden.
Gruß Lord 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 network • my 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
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
waran hat geschrieben:
Mal was anderes: Jetzt wo GL2 sowiso nicht mehr weiterentwickelt wird - wäre es nicht sinnvoll, OpenGL3 und aufwärts in eine eigene dglOpenGL.pas zu packen?
Es wäre schon ein bisschen ungünstig, wenn man einen 3er-Kontext verwenden will, aber alle Funktionen seit dunkelsten GL-Anfängen im Header hat.
Nun ja. Es wird offiziell nicht mehr weiterentwickelt. So weit so richtig. Allerdings heißt das nicht, dass die Hersteller keine Erweiterungen mehr in die 2.0 Kontexte einbauen dürfen. Ich meine NVidia hätte da so etwas schon angekündigt. Also bleibt dort immer Restarbeit vorhanden.
Nichts destro trotz habe ich auch schon über einem eigenen 3.0+ Header nachgedacht. Besonders als ich in der Spec gelesen habe, dass es seperate 3.0+ C++ Header geben soll. Ich persönlich muss aber gestehen, dass ich so lange warte muss bis dieser C++ Header existiert, da ich aus der Spec nicht herleiten kann was nun tatsächlich alles dort enthalten ist und was nicht. Und den gibt es natürlich noch nicht.
Wobei OpenGL 3.0 dort auch witzig ist. Die Funktionen aus 1.0-2.1 sind ja noch in 3.0 enthalten. Aber nur als deprecated gekennzeichnet. In 3.1 sind diese Funktionen größtenteils entfernt worden. Es sei denn die Implementation unterstützt eine Kompatibilitätserweiterung. Was derzeit vermutlich auch alle machen dürften, da die Funtionen sowieso vorhanden sind. Also würde da aktuell eigentlich so ziemlich nichts rausfallen. Zu mindest in meinem Verständniss. Das ist aber nur einer meiner Gedankegänge so am Rande.
Registriert: Di Dez 27, 2005 12:44 Beiträge: 393 Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo,
nun ja wenn man den Link oben verfolgt, versichert zumindestens Nvidia, dass es (verständlicherweise) desweiteren keine Pläne gibt, die alten Funktionen nicht mehr zu unterstützen.
Das hört sich doch schon mal beruhigend an
Viele Grüße
dj3hut1
_________________ Wenn Gauß heute lebte, wäre er ein Hacker. Peter Sarnak, Professor an der Princeton University
Mitglieder in diesem Forum: 0 Mitglieder und 6 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.