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

Aktuelle Zeit: Fr Jul 18, 2025 11:49

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Kleine Frage zur OpenGL-Version
BeitragVerfasst: Di Jul 19, 2005 13:05 
Offline
DGL Member

Registriert: Di Jul 19, 2005 12:47
Beiträge: 2
Erstmal ein herzliches Hallo an alle... ;)

Ich bin gerade dabei, mich in OpenGL einzuarbeiten und studiere fleißig Tutorials... Dabei tauchen immer wieder verschiedene Versions-Nummern von OpenGL auf.

Wo kann ich mir einen Überblick verschaffen, wann in etwa, welche Version aktuell war/ist? Ich möchte natürlich, dass meine kleinen "Experimente" nicht nur bei mir lauffähig sind, sondern auch auf anderen, älteren PCs...

Und wie kann ich herausfinden, welche Version auf meinem PC ist? Ich hab mal die opengl32.dll gesucht. Diese hat die Versionsnummer 5.1.2600.2180. Was sagt mir das? Außerdem steht dort, sie sei Bestandteil des ServicePacks von Windows. Wird sie also nicht vom Grafikkartentreiber aktualisiert?

Ich hoffe, ich habe bei meiner Suche im Forum entsprechende Antworten nicht übersehen und bedanke mich ganz herzlich für Eure Geduld und Antworten.

Liebe Grüße, Gina.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 19, 2005 13:38 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hallo Gina. Willkommen am Board.

Die Versionsnummer von der OpenGL32.dll solltest als aller erstes gleich einmal wieder vergessen. Die sagt nichts über die verfügbare OpenGL Version aus. Und das ist die einzig wichtige Version. Aber wieder zur Opengl32.dll. Diese ist Bestandteil von Windows und hat sich funktional wohl seit einigen (9?) Jahren nicht mehr verändert. Muss sie aber auch nicht. Wenn du einen Grafiikkartentreiber installierst, dann registriert sich dieser in der Registry und die OpenGL32.dll greift dann auf ihn zu. Da du auch mehrere Grafikkarten von unterschiedlichen Herstellern installiert haben kannst wäre es fatal, wenn irgendeiner die Opengl32.dll ersetzen würde. Dann würde nur eine deiner Karte funktionieren. Also entsprechend der Trick mit der DLL als Wrapper. Sollte kein passender Treiber gefunden werden bietet die DLL auch eine Softwareimplementation, die so ziemlich das Schlechteste ist was einem passieren kann.

Auslesen kannst du die OpenGL Version nur, wenn du die DLL geladen hast und OpenGL initialisiert wurde. Dann mit dem Befehl.
Code:
  1. Text := glGetString(GL_VERSION);

Der Text der dabei raus kommt sieht in etwa so aus. "2.0.5079 Win2000 Release". Das besagt, dass ich eine Grafikkarte mit OpenGL Version 2.0 habe. Von unserem Header wird das zu Begin automatisch gemacht und er füllt ein paar Variablen mit denen man die Version abfragen kann. GL_VERSION_1_5 zum Beispiel.
Damit weißt du dann welche OpenGL Version deine Grafikkarte unterstützt. Mit jeder neuen OpenGL version sind verschiedene Extension in den Kern gewandert. Diese sind dann also für diese Versionsnummer zwingend Vorraussetzung. (Multitexturing zum Beispiel ab 1.3)

Zusätzlich zur Kernfunktionalität werden die verschiedensten Extensions unterstützt. Das sie vorhanden sind ist kein muss! Es könnte also auch passieren, dass du irgendwann mal eine wichtige Funktionalität nicht zur Verfügung hast. Dann kannst du entweder nur drauf verzichten (z.B. Shader) oder dein Programm muss seinen Dienst verweigern. Eine andere Möglichkeit gibt es nicht.

Hier findest du eine Liste mit Extensions und Grafikkarten die sie unterstützen. Mit dem Tool was es dort gibt kannst du dir auch anzeigen lassen was deine Karte alles kann.

Mit diesem Programm kannst du dir sogar anzeigen lassen welche Extensions in welcher OpenGL Version vorhanden sind und ob sie deine Karte unterstützt. Zusätzlich ist dort auch so eine Hardwaredatenbank eingebaut. Das aber nicht ganz so gut.

PS: Wann welche Version aktuell ist oder war ist meiner Meinung nach ausschlaggebend, da zum Beispiel eine TNT2 niemals über OpenGL 1.2 oder 1.3 hinweg kommen wird. Zwecks Hardwarebegrenzungen. Und diese Karten sind teilweise heute noch im Einsatz. Evtl macht es Sinn bei der ein oder anderen Technologie nach "billigeren" älteren Alternativen zu suchen und diese bei bedarf zu aktivieren (Renderpfade).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 19, 2005 13:41 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Ein herzliches Willkommen bei uns.
Zunächst einmal die gute Nachricht. Es sollte eigentlich egal sein welchen Header Du verwendest und deine OpenGL-Anwendung auf allen Systemen laufen, die von Seiten der Grafikkarte her alle Funktionen unterstützen. Verwendest Du also nur Funktionen auf Basis von OpenGL 1.0 wird dies überall dort laufen, wo diese Version oder neuer vorhanden ist. Das ATI und NVIDIA heutzutage am weitesten verbreitet ist, kann man wohl auch getrost darauf verweisen, dass der Anwender "einfach die neusten Treiber installieren soll" und es sollte keinerlei Probleme geben. (zumal die kommerziellen Titel mit den gleichen "Problemen" kämpfen und dank Counterstrike wohl auch die meisten einen aktuellen OpenGL-Treiber drauf laufen haben).
Daraus ableitend kann ich wohl mit gutem Gewissen Dir empfehlen die "neusten" Header zu verwenden. Es macht keinen Sinn alte zu nutzen. Würde also einfach unsere DGL-Header nehmen. Möchtest Du dass deine Anwendung dann auch auf alten Systemen laufen, darfst Du halt nur die neueren Funktionalitäten verwenden. Da der Begriff "altes System" recht schwer zu fassen ist, ziehe ich persönlich meine Grenze in Shader-Karten ("DX9-Karten") und anderen. Für fast 20€ bekommt man vom Hersteller schon fast soviele GeForce4-Karten an den Kopf geschmissen wie man tragen kann. Anwender die ein ältere Karte haben, haben also quasi "selbst schuld", wenn sie diese noch haben. Niemand kann erwarten, dass jemand 500€ für eine Grafikkarte ausgibt, aber eine DX8 sollte schon drinne sein.
Gerade wenn Du momentan nur einsteigst wird ohne die Verwendung von Extensions deine Software auf nahezu allen Systemen laufen. Informationen über die auf dem System vorhandene OpenGL-Implementation bietet:http://wiki.delphigl.com/index.php/GlGetString diese Funktion. Sobald beim Vendor etwas wie NVIDIA oder ATI auftaucht ist man schon auf der sicheren Seite, sollte dort sowas wie MICROSOFT auftauchen, ist vermutlich kein Grafikkarten-Treiber installiert und die OpenGL-Funktionen werden an den Softwarerenderer von Microsoft weitergegeben, was wohl heutzutage selbst für simple Anwendungen geschwindigkeitstechinisch unbefriedigend sein wird.
//edit: Was mich mehr schockiert als das es nun zwei zeitgleiche Antworten gab ist, dass die von Lossy weitaus ausführlicher ist ;-)

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 19, 2005 13:53 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Phobeus hat geschrieben:
Was mich mehr schockiert als das es nun zwei zeitgleiche Antworten gab ist, dass die von Lossy weitaus ausführlicher ist ;-)

Och. Weiste. Bei dem Thema. Da finde ich doch gerne kein Ende. :twisted:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 19, 2005 17:29 
Offline
DGL Member

Registriert: Di Jul 19, 2005 12:47
Beiträge: 2
Ich danke Euch ganz doll für die super ausführlichen Antworten und das herzliche Willkommen...

Hab auch gleich den Befehl glGetString(...) ausprobiert mit den verschiedenen Parametern. Bei GL_VERSION kommt "1.5.4650 WinXP Release" heraus... (Ich gebe zu, dass ich ein Weilchen kein update meines Treibers mehr gemacht habe. Naja, solange alles läuft ;))

Bei GL_EXTENSIONS kommt ne ganze Menge ;)

Dann werd ich mich da mal durchackern...

Vielen lieben Dank, bis denne, Gina.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 19, 2005 19:27 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
OpenGL1.5 ist die Vorletzte OpenGL Version. Danach wurde direkt zu OpenGL2.0 gesprungen. Sooooo alt isses also gar nicht.Und mit den OpenGl1.5 Funktionen wirst du ne weile zu tun haben. Als ANfänger ist die Welt von OpenGL nämlich verdammt groß und vielseitig. Die Sachen wo's dann wirklich auf die Version ankommt wirst du vermutlich erst in ein oder 2 Jahren kennen wollen. (Und dann gibts bestimmt schonwieder neue sachen... ein Teufelskreis ;) )

_________________
Blog: kevin-fleischer.de und fbaingermany.com


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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 | 15 Queries | GZIP : On ]