wie kann ich beim aktuellen dglOpenGL-Header auslesen, welche OpenGL-Version von der GPU unterstützt wird? Und zwar will ich es machen, bevor überhaupt irgendetwas anderes OpenGL mäßiges gemacht wird, damit man abfangen kann, ob man die OpenGL-Komponente benutzt oder auf eine Alternativbibliothek zurückgreift.
Ich habe es eben so probiert:
Code:
ReadImplementationProperties; result := GL_VERSION_1_1;
Allerdings schmiert da der Header an der Zeile
Code:
glGetString(GL_VERSION)
ab, da glGetString noch nicht intializiert werden kann, da GL_LibHandle noch nil ist.
Wenn man statt
Code:
procedure ReadImplementationProperties; var Buffer: Ansistring; begin ReadCoreVersion;
// Check all extensions Buffer := Int_GetExtensionString; ...
Code:
procedure ReadImplementationProperties; var Buffer: Ansistring; begin Buffer := Int_GetExtensionString;
// Check all extensions ReadCoreVersion; ...
machen würde, könnte es klappen. (ungetestet)
Gibt es einen alternativen Weg, ohne das man über ActivateRenderingContext & Co gehen muss, bis der Header ggf. gefixt wird?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ich glaube du hast einen Fehler in deiner Logik!
Wie willst du es hinbekommen die OpenGL Version auszulesen, wenn noch kein OpenGL Kontext erstellt wurde? Erst wenn du einen Kontext erstellst geht windows her und versucht einen passenden Treiber zu laden. Und erst dann kannst du überhaupt sinnvoll auf die OpenGL Version zugreifen. Also um ein Erstellen eines Kontextes wirst du in keinem Fall herum kommen.
Um das Ganze zu beschleunigen solltest du ActivateRenderContext mit loadext = false aufrufen. Dann werden nur die verfügbaren Extension + Versionnummern geladen und Methoden die zwingend nötig sind. Wenn du das dann richtig benutzen willst musst du aber noch mal ReadExtensions aufrufen. Da erst dann alle Methoden geladen werden.
PS: Im aktuellen Header würde dein fix rein gar nicht bewirken, da Int_GetExtensionString und ReadCoreVersion die Methode glGetString selbsttätig laden. Also beide. Und wenn du OpenGL nicht initialisert hast werden beide Aufrufe fehl schlagen. Da ist die Reihenfolge dann auch egal.
Mitglieder in diesem Forum: 0 Mitglieder und 15 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.