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

Aktuelle Zeit: Fr Jul 18, 2025 11:21

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Aug 14, 2010 23:15 
Offline
DGL Member

Registriert: Di Jan 24, 2006 18:46
Beiträge: 97
Hallo ihr,

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?

Grüße
SunBlack


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Aug 15, 2010 09:41 
Offline
DGL Member
Benutzeravatar

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.


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


Wer ist online?

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.

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