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

Aktuelle Zeit: Fr Jul 18, 2025 08:58

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



Ein neues Thema erstellen Auf das Thema antworten  [ 74 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 18, 2008 14:43 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Grundsätzlich gefällt mir die Struktur von OpenGL 3 sehr viel besser als die von 1 und 2. glBegin und die Statemachine bin ich gerne los. Die haben imo keinen vorteil gegenüber VBO(notfalls in Software, was immernoch nicht langsamer als glBegin sein dürfte) und Objekten. Die fehlende Unterstützung für alte Karten ist jedoch imo problematisch. Am liebsten wäre es mir wenn man für alte Karten pseudoshader erzeugen kann, wobei der "Fragmentshader" eine Beschreibung der Einstellungen für Multitexturing&co ist, und der "Vertexshader" eine Beschreibung für T&L.
Die anderen Änderungen müssten so weit ich das sehe ja unabhängig von der Grafikkarte sein.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 18, 2008 18:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Mit OpenGL 3.0 war auch geplant, die fixe Pipeline zu entlasten, indem GLSL basierte Vertex-,Fragment- und Geometrieshader die Pipeline teilweise ersetzen.
Bisher war es ja so, das man durch die Statemachine massive viele standardcodefetzen mitgelierfert wurden und die dann zu einer Pipeline zusammengesteckt wurde. Nun war die rede, das man dann Teile der Pipeline durch GLSL ersetz und damit den Treiber wieder stark verkleinert und vereinfacht.
Also States in den GLSL code verlagert und somit keine States mehr sind, sondern vom Programmierer entwickelte Codefetzen.
Nachteil wäre, man muss nun in GLSL bewandert sein und man kann GLSL nicht mehr einfach so den Artist in die Hand drücken, da er nun viel zu viel Macht bekommen würde. Lösungen wie bei Unreal3 mit dem zusammenklicken von materials und die automatische generierung von shadercode daraus wären sehr praktisch.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 18, 2008 19:03 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
ich persönlich finde es eher schade, dass das jetzt alles komplizierter wird... gegen vertexarrays habe ich zwar gar nichts, aber warum soll man, um ein quadrat zu beleuchten, 100 zeilen shader schreiben, wenn es doch jetzt auch ohne geht?

zumal ich schon zu doof bin, shader in einem programm zu verwenden (ja, das kompilieren funktioniert immerhin). da helfen auch die beiden tutorials hier überhaupt nicht.

und wozu soll ich mir eine klasse zusammen bauen, um ein quadrat rendern zu können!?

nein, ich bin tatsächlich nicht sonderlich erfahren, aber warum muss alles komplizierter werden!?

btw: es wurde gesagt, dass sich OGL3.0 an fortgeschrittene richtet. meiner meinung nach ein völlig falscher ansatz, denn dann gibt es irgendwann keinen "nachwuchs" mehr - und keiner will mehr opengl. armes linux.

tz tz tz


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 18, 2008 19:33 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Du hättest dir den Thread evtl. ein wenig genauer durchlesen sollen, OpenGL 2.x wird ja paralell weiter existieren. Und da heute alle Neuerungen im Shaderbereich liegen (siehe z.B. Geometryshader) kann man die feste Pipeline (die es ja als solche schon lange nicht mehr in dedizierter Hardware gibt) rauswerfen und eine eine shaderzentrische API (GL 3.0) erschaffen.

Wer dann wie du weiterhin Sachen aus der festen Pipeline nutzt bleibt bei GL2.x

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 18, 2008 21:49 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Hallo Ireyon,
so schlimm wird es nicht werden. Eine "sanfte Einführung" für Anfänger wird es immer geben, genauso wie es Leute geben wird, die sich genau darum kümmern.

Und was Linux betrifft: Linux kann von einem starken konkurrenzfähigen OpenGL nur profitieren. Im Gegenteil, es wäre sogar schlecht für Linux, wenn OpenGL in der Entwicklung zurückbleibt. Genau das ist was Linux eigentlich noch fehlt: eine moderne schnelle schlanke Grafik-Library, nicht ein Ding von Vorvorgestern.

Ermutigende Grüße
Traude :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2008 09:56 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 31, 2007 18:32
Beiträge: 150
Programmiersprache: Pascal
Auserdem sollte es ja kein problem sein bei den Einteiger Turtorials erstmal die Shader mitzuliefern und später in Turtorials für Fortgeschrittene zu erklären was der Code wirklich bringt, oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2008 10:50 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo,

falls OpenGL 3.0 wirklich nur noch mit Shadern arbeitet, wäre es ganz hilfreich, wenn man ein Programm hätte, was aus einer Folge von alten OpenGL-Befehlen gleich den passenden Shader-Code generiert.

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2008 12:05 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Macht euch mal nicht soviele sorgen um die Einführung in OpenGL3.0.
Wichtiger ist eigentlich nur, dass soviel wie möglich implementiert wird und nicht wieder die hälfte an Features auf der Strecke bleibt.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2008 15:10 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
@Sascha Willems

ich habe mir den thread schon durchgelesen.

aber wenn OGL3 dann mal irgendwann eingeführt wird und irgendwann auch jeder rechner das unterstützt (mir faellt ein, meiner kann nur 2.0, nichmal 2.1), würde ich schon gerne auch damit umgehen können.

zum thema "schlanke API": je 'schlanker' die api ist, desto mehr muss man in aller regel selber dazuimplementieren. und was an glBegin() so schlimm sein soll, begreif ich nich. ich komm damit eigentlicgh gut klar.


Zuletzt geändert von Ireyon am Do Jun 19, 2008 15:29, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2008 15:25 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Du kommst damit klar, aber der Treiber nicht. :) Vorhin war mal ein schönes Zahlenbeispiel, dass bei MesaGL der Code für glBegin und glEnd alleine 30% des ganzen Treibers ausmacht. :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2008 15:31 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
wo ist problem dabei?

besser ordentlich glbegin als 100 zeilen shader für ein dreieck.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2008 15:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Nun, das glBegin und die Shader haben ja nix miteinander zu tun.

Das Problem bei glBegin/glEnd ist so wie ich das bisher verstanden habe, dass im Treiber aus den Befehlen eine Art Funktionsscope wie auch ein begin und end in Pascal es bewirkt, erzeugt werden muss. Dazu kommen die ganzen Fehlerabfragen, weil ja einige Befehle zwischen glBegin und glEnd nicht erlaubt sind. All das kostet Zeit und Code. Dazu müssen die Vertices zwischen glBegin und glEnd erstmal gecacht werden, weil man ja schlecht die einzeln zur Graka schicken kann ohne der zu sagen, was sie eigentlich damit anstellen soll (also bei GL_TRIANGLES immer alle drei Vertices abschicken).

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 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:
BeitragVerfasst: Do Jun 19, 2008 16:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ireyon hat geschrieben:
besser ordentlich glbegin als 100 zeilen shader für ein dreieck.


Das ist wohl "leicht" übertrieben. Du wirst nur zum Rendern eines einfachen Dreieckes u.U. weit weniger Zeilen brauchen als bisher mit glBegin...glEnd. Wie ich hier schonmal geschrieben hat kann man für solche einfachen Sachen ja eine Konstante deklarieren die deine Vertices enthält, und diese übergibts du dann direkt an ein VBO, VA, etc. (je nachdem wie GL3.0 aussieht ist dass dann nur eine Zeile). Es wird dich keiner zwingen Shader zu verwenden, aber wenn du Beleuchtung usw. willst kommst du ja selbst heute nicht um Shader herum, die per-Vertex-Beleuchtung von OpenGL ist ein Relikt aus der Steinzeit und wird zuercht entfernt. Sich seine eigene Beleuchtung im Shader zu schreiben ist da viel besser und flexibler. Wer sich ein wenig mit 3D-Grafik auskennt hat die Shadersyntax schnell drauf und kann innerhalb kürzester Zeit eigene Beleuchtungsmodelle implementieren.

P.S. : Selbst für ein komplexes Beleuchtungssystem wird man sicherlich keinen 100-Zeilen Shader brauchen. Ausserdem gibts u.a. von 3DLabs ein Tool (ShaderGen wenn ich recht entsinne) dass dir aus Einstellungen für die feste Funktionspipeline passende Shader erstellt. Die sind zwar nicht optimiert, aber perfekt um in die Materie einzusteigen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2008 17:11 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
ShaderGen scheint nicht mehr zur Verfügung zu stehen: http://developer.3dlabs.com/downloads/shadergen/index.htm


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2008 15:21 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Mär 09, 2005 15:54
Beiträge: 372
Wohnort: München
Programmiersprache: Delphi, C#, FPC
@Traude: Kann es sein, dass der ShaderGen, den du meinst, jetzt hier ist: http://3dshaders.com/home/index.php?option=com_weblinks&catid=14&Itemid=34

_________________
Aktuelles Projekt: Gael - Development Blog
Website: LightBlackSoft.com


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


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 4 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 | 15 Queries | GZIP : On ]