OpenGL - glCreateProgram in einem separatem Thread

thekiller

Viceinator
Hallo,

ich programmiere gerade einen Loader-Thread für meine 3D-Engine und ich bin gerade auf ein Problem gestoßen. Nämlich, dass glCreateProgramm() in diesem Thread abstürzt.
Die Fehlermeldung vom VS2010 Debugger sagt => "Unbehandelte Ausnahme blabla...Zugriffsverletzung beim Lesen an Position 0x00000720. "

Ich habe schon probiert vor dem Aufruf von glCreateProgram() glew neu zu initialisieren aber bringt leider nichts.

Hat jemand ne Idee?

MfG Manuel
 
Ah ok ich glaub dass bringt mich schonmal weiter danke!
Auf den ersten Blick siehts aber recht nervig aus zu implementieren weil der Hauptthread fast ununterbrochen nur OpenGL Funktionen nutzt und ich den dann ja stark ausbremsen würde, wenn ich immer den Context nem anderen Thread geben muss, damit der seinen Dienst verrichten kann...
Mh na ma schauen vielleicht muss ich dass ja auch gar net...
 
Du kannst zum Beispiel ein System im Stile einer Messagequeue erstellen und dann alles was mit OpenGL zu tun hat mit einem Request an den Hauptthread senden. Dann kannst du die (üblicherweise) verhältnismäßig langsameren Methoden wie I/O in einem separaten Thread machen, der deinen Hauptthread nicht ausbremst.
 
Ich glaub ich mach es so ähnlich wie du es beschrieben hast.

In dem LoaderThread werden die neuen Objekte, Texturen, etc. geladen und diese werden in eine art Liste eingefügt, auf die der RenderThread auch zugreifen kann. Also der LoaderThread läd wirklich nur die Dateien von der Festplatte in den RAM etc.

Dann schaut der RenderThread in jedem Durchgang in diese Liste und führt die OpenGL-Funktionen aus die für diese Objekte zur Anzeige noch fehlen.

So kann ich mir das ganze hin und her mit dem Context sparen.
 
Zurück