Ach verdammt, ganz vergessen hier zu antworten...
Kerli hat geschrieben:Könnte es denn sein dass du die Funktion schon verfügbar hast und dann mit deinem Funktionsaufruf überschreibst? Ansonsten bekommst du vielleicht mit GetLastError weitere Informationen wo die Fehlerursache liegen könnte.
Ich bekam ERROR_INVALID_HANDLE von GetLastError().
Ich hatte vorher Probleme mit dem HDC, konnte aber inzwischen an der Stelle aber garantieren, dass der HDC in Ordnung ist. Deswegen verstand ich die Meldung nicht.
Die Lösung war recht einfach: Es gibt eine Routine, die OpenGL initialisiert, aber blöderweise gleich zum Malen auffordert. Beim Malen wurde dann aber auch Text geschrieben und weil es den Font nicht gab, flog einem das Ding um die Ohren. Also musste der Font zuvor initialisiert werden. In dem Bereich wird - für den Font - auch die Adresse der Funktion herausgesucht. Also wurde die Initialisierungsroutine mit dem Draw-Befehl weiter nach hinten verlegt.
Da Text nur zu Debugzwecken geschrieben wird, fiel nicht auf, dass nichts geschrieben wurde, weil nicht die Debug-Version lief. Einige Tage später wollte ich die wieder haben und da war kein Text mehr... Ich erinnerte mich an den Streß mit den HDC, bekam die dazu passende Meldung ERROR_INVALID_HANDLE...
Schlussendlich waren folgende Zeilen in der Init-Routine durch den späteren Aufruf nach hinten gerutscht:
Code: Alles auswählen
_hrc = wglCreateContext(_hdc);
wglMakeCurrent(_hdc, _hrc);
Ohne aktiven Rendering-Context, wohl kein wglGetProcAddress(). Also die Init-Routine wieder nach oben, das Draw() rausschmeißen - gezeichnet wird so oder wenige Millisekunden später erneut und alles läuft wieder. Also blöder Fehler, weil ich aufgrund eines anderen Problems noch gedanklich an der falschen Stelle suchte.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.