Registriert: Do Mär 05, 2009 20:17 Beiträge: 284 Wohnort: Kaiserslautern
Hallo,
in letzter Zeit sind mir vermehrt Empfehlungen für gDebugger im Forum hier aufgefallen, deshalb habe ich mir das Tool jetzt auch mal besorgt. In der Tat hat mich gDebugger gleich mal auf einen peinlichen Fehler (Memory Leak) hingewiesen, dieweil ich meine Rendering Contexte nicht frei gegeben habe.
Soweit schonmal so gut..
jetzt bekomme ich noch diese Meldung:
Zitat:
Detected error: The debugged process asked for an extension function pointer (glGenBuffers) from one render context, but called this function pointer in another render context (context #1)
ich verwende insgesamte 2 rendering contexte und habe wglsharelists eingeschaltet.. meine Anwendung arbeitet auch so wie ich mir das wünsche - Kennt jemand diesen Fehler - ist es überhaupt einer? Was kann ich tun damit er verschwindet?
Hallo, dieser Fehler tritt auf, wenn du mehrere Rendercontexte hast (zB. auch wenn man einen neuen OpenGL 3+ Context erstellt). Wenn ich das richtig verstanden habe muss man für jeden Context die Pointer zu den OpenGL-Befehlen neu abfragen. Das heißt, das du zu deinem neuen Context auch die Pointer der glXXX Befehle updaten musst. Die meisten Treiber (zumindest gab des bei mir noch nie Probleme) geben aber keinen Fehler aus, wenn du die Function-Pointer vom anderen Context weiter benutzt.
Registriert: Do Mär 05, 2009 20:17 Beiträge: 284 Wohnort: Kaiserslautern
Dankeschön für die Antwort, das deckt sich soweit mit meinen Beobachtungen.. (das es keine Probleme verursacht) aber das muß ja nicht für alle exotischen grafikkarten und ihre Treiber stimmen, deshalb wärs mir lieb, wenn ich es "richtigstellen" könnte, weiß nur leider nicht wie... wie würde das denn konkret aussehen
Das Abfragen der Pointer macht normalerweise die dglOpenGL.pas "automatisch" im Hintergrund. OpenGL ist beim Einbinden auch nicht mehr als eine dynamische Library, bei welcher die verfügbaren Funktionen mittels GetProcAddress abgefragt werden können. Der Pointer, welcher dann auf die zurückgegebene GL-Funktion zeigt kann allerdings nur eine Adresse speichern (glGenBuffers=Pointer auf Funktion) und wird somit beim erstellen des 2ten Kontextes überschrieben. Du müsstest also die OpenGL-Funktionen nochmals selber abfragen und speichern.
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.