Wen ich mich nicht täusche, müsste dies ein OpenGL 4.2 Context erzeugen. Nur komischerweise läuft mein Programm, obwohl meine Grafikeinheit nur 4.0 unterstützt.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Merkwürdig. Woher hast du die Information, dass deine Grafikkarte kein OpenGL 4.2 kann?
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Theoretisch müsste die zweite Assertion fehlschlagen - ich weiß nicht, was Delphi/FPC in diesem Fall tut. Überprüfe mal manuell, ob RC wirklich ungleich 0 ist (vor dem Aufruf von ActivateRenderingContext). Falls ja, wird die Funktion wglMakeCurrent vielleicht gar nicht aufgerufen und folglich bleibt der GL2-Kontext aktiv.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Zufällig besitze ich die gleiche Intel-Grafik wie du. Daher habe ich das ganze mal nachgestellt. Bei dem Versuch, einen 4.1 oder 4.2-Kontext zu erstellen, gibt es keinen Fehler. Allerdings meldet GL_VERSION nur 4.0 - wie bei dir. Ab 4.3 hingegen schlägt die Kontexterstellung völlig fehl. Ich vermute, das hängt mit der Zusammenschaltung mit der Nvidia-Grafik (Optimus) zusammen. Mein Nvidia-Treiber erlaubt nämlich maximal OpenGL 4.2.
Hat dein System auch Optimus?
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Zufällig besitze ich die gleiche Intel-Grafik wie du. Daher habe ich das ganze mal nachgestellt. Bei dem Versuch, einen 4.1 oder 4.2-Kontext zu erstellen, gibt es keinen Fehler. Allerdings meldet GL_VERSION nur 4.0 - wie bei dir. Ab 4.3 hingegen schlägt die Kontexterstellung völlig fehl. Ich vermute, das hängt mit der Zusammenschaltung mit der Nvidia-Grafik (Optimus) zusammen. Mein Nvidia-Treiber erlaubt nämlich maximal OpenGL 4.2.
Hat dein System auch Optimus?
Ich habe nur die OnBoard-Karte von Intel, ich habe keine externe Grafikkarte.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
@Treiber-Update: Habe ich neulich schon gemacht, jedoch funktionierte ein älteres Spiel dann nicht mehr richtig. Da ich derzeit keinen Bedarf an OpenGL > 3.3 habe, habe ich das Update dann wieder rückgängig gemacht.
mathias hat geschrieben:
Ich habe nur die OnBoard-Karte von Intel, ich habe keine externe Grafikkarte.
Dann vermute ich, dass der Rückgabewert von glGetString(GL_VERSION) in diesem Fall einfach fehlerhaft von Intel implementiert ist. Wenn ich nämlich folgendes mache (mit Intelgrafik): - OpenGL 4.2-Kontext anfordern - GL_VERSION auslesen (liefert 4.00) - wglGetProcAddress("glDrawArraysInstancedBaseInstance") dann liefert mir der letzte Aufruf nicht NULL. glDrawArraysInstancedBaseInstance ist erst seit 4.2 im OpenGL-Kern integriert. Intel hat also, wie es aussieht, 4.2-Funktionalität implementiert, aber vergessen den Version-String anzupassen. Anders kann ich mir das nicht erklären.
_________________ 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 6 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.