Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Moin, ich habe mal zwei Fragen/mögliche Probleme zum DGL-Header:
Sehe ich das richtig, dass die Funktion CreateRenderingContextVersion nur unter Windows zur Verfügung steht?
In der Doku (beiliegende HTML-Datei) des Headers steht folgendes Code-Beispiel:
Code:
procedure MyGLInit;
begin
InitOpenGL;// Don't forget, or first gl-Call will result in an access violation!
MyDC := GetDC(...);
MyRC := CreateRenderingContext(...);
RC := CreateRenderingContextVersion(DC,[opDoubleBuffered],4,2,True,32,24,8,0,0,0);// Creates an OpenGL 4.2 forward-compatible context
...
end;
Für mich sieht das nach einem Fehler aus. In Zeile 5 wird ein alter RC erstellt. Dieser wird nicht weiter benutzt. Wenn man sich den Rumpf der Funktion CreateRenderingContextVersion anschaut, so wird dort bereits ein LegacyRC erstellt. Somit müsste Zeile 5 eigentlich unnötig sein.
Edit: Und noch was:
mathias hat geschrieben:
Wieso steht einmal RC und einmal MyRC ?
Das "My" bei MyDC müsste auch weggenommen werden, damit Zeile 4 und 6 zusammen passen.
Also letztendlich müsste das Code-Beispiel wohl so aussehen:
Code:
procedure MyGLInit;
begin
InitOpenGL;// Don't forget, or first gl-Call will result in an access violation!
DC := GetDC(...);
RC := CreateRenderingContextVersion(DC,[opDoubleBuffered],4,2,True,32,24,8,0,0,0);// Creates an OpenGL 4.2 forward-compatible context
...
end;
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
glAwesome hat geschrieben:
Moin, ich habe mal zwei Fragen/mögliche Probleme zum DGL-Header:[list][*]Sehe ich das richtig, dass die Funktion CreateRenderingContextVersion nur unter Windows zur Verfügung steht?
Ja, ich hab irgendwo auf der Platte auch eine Version die auch für Linux und MacOSX (halt mit FPC) "funktioniert" (nicht ausgiebig getestet). Momentan bin ich zeitlich aber stark eingeschränkt, und wenn ich privat zum Entwickeln komme, dann Android. Mit Delphi hab ich privat seit Monaten nix mehr gemacht. Wer also was zum DGL-Header beisteuern will kann das gerne machen. Hätte natürlich auch kein Problem damit den in unser git-Repo zu packen.
glAwesome hat geschrieben:
[*]In der Doku (beiliegende HTML-Datei) des Headers steht folgendes Code-Beispiel:...
Ja, das was du schreibst ist vollkommen korrekt. Das entstand damals in Eile, die Doku müsste auch angepasst werden. Aber k.a. wann ich dazu komme...
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Die Änderung in der HTML-Datei ist ja wirklich nur Copy&Paste. Also habe ich sie kurzerhand mal angepasst und mit der unveränderten dglOpenGL.pas wieder gezippt. Ergebnis ist im Anhang - leider konnte ich im Wiki nicht finden, wo man die Originaldatei austauscht.
Bei der Linuxversion der CreateRenderingContextVersion-Funktion kann ich leider nicht helfen, da ich weder Linux noch einen Pascalcompiler habe.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Zuletzt geändert von glAwesome am Mi Jan 22, 2014 18:26, insgesamt 2-mal geändert.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Mir ist noch was aufgefallen: In meinen Programmen erzeuge ich zuerst DC und GC und dann erst rufe ich glewInit/gl3wInit oder was auch immer (hier: InitOpenGL) auf. Ist es korrekt, das wie im Beispiel umzukehren? Damit würden ja z.B. Functionpointer von OpenGL3/4-Funktionen abgefragt, bevor ein GL3/4-Kontext existiert. Ich bin mir da gerade nicht sicher.
Edit: Hab gerade nochmal nachgeschaut: Bei GLEW wird explizit gefordert, dass der OpenGL-Context bereits zur Verfügung stehen muss, wenn glewInit() aufgerufen wird. mathias hat diese Reihenfolge nun außerdem mit dem DGL-Header getestet und dadurch keine Fehler bekommen. Daher hier die neuere Version.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Zuletzt geändert von glAwesome am So Apr 06, 2014 13:01, insgesamt 1-mal geändert.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Es wurde noch ein Fehler im DGL-Header gefunden. Der dritte Parameter von glGetProgramInfoLog war fälschlicherweise als GLint statt PGLsizei deklariert. Die offizielle OpenGL-Seite ist derzeit leider nicht erreichbar, aber die Version im Google-Cache bestätigt, dass es sich nicht um einen Fehler in unserem Wiki handelt.
Im Anhang befindet sich die korrigierte Version des Headers. Allerdings wäre es mMn langsam mal Zeit, dies auch in die offizielle Version des Headers zu übernehemen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich schaus mir die Tage an, komme momentan eher weniger privat zum Coden.
Allerdings will ich den Header eh schon seit geraumer Zeit irgendwo einem öffentlichen Repo hochladen, an dem ihr dann auch Änderungen vornehmen könntet. Irgendwelche Vorschläge? Ich nutze privat BitBucket (git).
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ein DGL-Git-Repository! Gibts bei mir per PM mit SSH-PubKey und Reponamen.
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 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 Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Lord Horazont hat geschrieben:
Ein DGL-Git-Repository! Gibts bei mir per PM mit SSH-PubKey und Reponamen.
grüße
I know, ich hätt die Header aber lieder auf einer der großen Quellverwaltungs-Plattformen, allein wegen der Sichtbarkeit und der größeren Zielgruppe. Ich kenn einige nicht-DGLler die auch zum Header beigetragen haben und es ggf. auch wieder tun würden, da ist mir unser GIT irgendwie zu versteckt.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich nutze für die „Veröffentlichung“ github, möchte aber auf lange sicht davon weg. Gibt es denn leute, die ohne vorherige Bekanntmachung beigetragen haben? Wenn nein, ergibt das auch nicht viel sinn, das auf github zu packen.
Ansonsten wäre auch noch die Option, das Repository von DGL auf Github zu replizieren. Summa sumarum fände ich es recht gut, wenn github nicht das einzige öffentliche Repository wäre, da github nunmal eine kommerzielle cloud-Firma ist.
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 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: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
ich würde es auf alle Fälle parallel bei uns hosten, bin da der selben Meinung wie Lord Horazont, allerdings hat Sascha auch nicht ganz Unrecht, denn auf github könnten auch Andere durch Zufall auf unseren Header aufmerksam werden und dann dort ggf. bei der Implementierung helfen oder nachbessern (entsprechende Schreibrechte vorrausgesetzt). Was das erstellen des Context unter Linux angeht. Der glContext kann das *werbung mach*
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Die Diskussion ist ja zum Erliegen gekommen. Ich würde mich auch dafür aussprechen, sich nicht von einem einzelnen Unternehmen wie github abhängig zu machen. Wir sollten allerdings nicht den Fehler machen, nichts zu tun, nur weil nicht jeder der gleichen Meinung ist. In ein paar Wochen wird voraussichtlich das erste OpenGL3-Tutorial fertig sein. Es wäre schade, wenn dort ein absichtlicher Bug drin wäre, um einen Workaround für einen Fehler im DGL-Header zu haben.
Nebenbei ist mir noch aufgefallen, dass es cool wäre, den Header in einem Modus betreiben zu können, in dem nur nicht-deprecated Functions geladen werden. Also so ähnlich wie gl3w.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Reicht es nicht wenn man einen normalen Core Context erstellt der auch bei jedem Zugriff auf deprecated Funktionen eine Exception wirft? GL3W lädt nämlich leider auch keine Extensions und da sind einige schon relativ obligatorisch.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Die neue Version hab ich grade auf den dgl-FTP hochgeladen. Nochmal dank an glAwesome für die Fixes!
Wobei mir grade aufgefallen ist dass wohl noch einige GL 4.4 Konstanten fehlen z.B. GL_MAX_SPARSE_TEXTURE_SIZE_ARB. Ich schau da im Zuge einer neuen glCapsViewer-Version mal nach, kann also sein dass es bald wieder nen aktualisierten Header gibt.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Sorry, dass mir das erst jetzt auffält: Wir haben das gleiche Problem auch nochmal bei glGetShaderInfoLog...
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Mitglieder in diesem Forum: 0 Mitglieder und 34 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.