Hallo!
Hab mir mal
OpenGL reingezogen und habe beim ersten Test der Formulartemplate, von der in der Wiki die Rede ist die genannte
Exception erhalten.
Unter Google hab ich "
OpenGL Handbuch" ohne die Anführungszeichen als Suchbegriff verwendet und dann die "Hauptseite - DGL Wiki" aufgerufen.
Nach Download der "
OpenGL 1.5 Template (
VCL)" habe ich mir im Projektordner ein Directory namens
OpenGL angelegt und alle Dateien und Unterordner da reinkopiert, wobei ich die Verzeichnisstruktur beim Original belassen habe. In der
IDE habe ich die Suchpfade angepasst.
In der
IDE erscheint nach Drücken "F9" ein :
Dialog mit Frage Anhalten oder fortsetzen
Fortsetzen zeigt das Hauptdenster mit 2 gleich großen Panels an.
Dennoch kommt zunächst die besagte
Exception. Warum?
Ist es sinnvoll, eine frühere Version als 1.5 zu verwenden?
Delphi-Quellcode:
procedure TForm1.StartGL;
begin;
//Rendering Context initialisieren
RC1 := wglCreateContext(v1DC);
RC2 := wglCreateContext(v2DC);
// Überprüfen, ob beide RCs erzeugt werden konnten
if (RC1=0)
or (RC2=0)
then
begin
MessageDlg('
Rendering Context kann nicht erstellt werden.', mtError, [mbOk], 0);
Halt(100)
end;
// Überprüfen, ob beide RCs aktiviert werden konnten.
//UND HIER KOMMT DIE EXCEPTION
//Warum erst hier, falls einer der Gerätekontexte
//nicht erzeugt werden konnte?
if (
not wglMakeCurrent(v1DC, RC1))
or (
not wglMakeCurrent(v2DC, RC2))
then
begin
MessageDlg('
Rendering Context kann nicht aktiviert werden.', mtError, [mbOk], 0);
Halt(100)
end
end;
Was macht die Funktion wglMakeCurrent()?
Ich habe mir das OpenGL12.zip Paket hier:
http://www.inf.tu-dresden.de/content...ENGL/index.htm
und template_vcl_2rc runter geladen und zwar hier:
http://www.delphigl.com/forum/viewtopic.php?t=7616
Ich verwende Turbo Delphi. Leider habe ich den Dialog noch nicht gefunden, wo ich "Bei Exceptions anhalten" aus schalten kann. So erscheint bei Start des Projektes außerhalb der
IDE die Meldung über die
Exception. Wenn ich dieses Meldungsfeenster schließe, kriege ich mein Fenster aber zu sehen mit 2 Panels drauf.