Opengl mit Thread
-
Ich habe ganz normal eine Thread Instanz meiner Thread Klasse erzeugt:
pThread = new mythread(false);Von der Execute() Funktion rufe ich eine weiter Funktion auf, die sobald sie außerhalb der Thread Klasse aufgerufen wird prima funktioniert, aber sobald sie über die Execute() Funktion des Threads aufgerufen wird tut sich gar nichts. Die Funktion ist:
for(int i=0;i<50;i++) { glTranslated(0.0,0.02,0.0); glCallList(3); SwapBuffers(wglCetCurrentDC()); }Wie gesagt ohne Thread funkioniert alles einwanfrei.
Kann mir jemand sagen woran das liegt, oder noch besser wie man es mit Thread zum laufen bringt!
Vielen Dank im Vorraus!
-
Du kannst nur in dem Thread OpenGL-Kommandos aufrufen, der OpenGL initialisiert hat, von anderen Threads aus geht das nicht.
-
Falls es sich um eine Fullscreenanwendung handelt (Spiel o.ä.) dann verzichte am besten auf mehrere Threads, die machen nur Ärger

-
1. Wie kann man auf die Threads von Opengl zugreifen oder muss man sie selber initaliesieren?
2. Ich wollte etwas für 2 Spieler programmieren und weiß noch nicht
wie ich von beiden Spielern gleichzeitig die Tasteneingabe bearbeiten soll,
wenn ich auf den Thread verzichte
-
Maiki schrieb:
1. Wie kann man auf die Threads von Opengl zugreifen oder muss man sie selber initaliesieren?
2. Ich wollte etwas für 2 Spieler programmieren und weiß noch nicht
wie ich von beiden Spielern gleichzeitig die Tasteneingabe bearbeiten soll,
wenn ich auf den Thread verzichteWenn du nur die Tasten Eingabe im Thread hast, wozu brauchst denn dann OpenGL-Funktionen?
mfg.
-
Ich lasse damit eine Figure springen und das mit einer for-Schleife und der glTranslated. Sobald nun die for-Schleife zum Springen läuft kann ich keine weitern Tasteneingaben mehr empfangen.
-
Maiki schrieb:
Ich lasse damit eine Figure springen und das mit einer for-Schleife und der glTranslated. Sobald nun die for-Schleife zum Springen läuft kann ich keine weitern Tasteneingaben mehr empfangen.
änder doch einfach nur eine variable, die die position der figur beinhaltet. mit dieser variabel wird dann im hauptthread gezeichnet.
mfg.
-
der Devicekontext gehört ja dem Fensterthread (der winmain funktion)
OpenGL will aber in den Devicekontext in einem andern Thread reinrendern -> synchronisations ProblemeJust my Senft
-
OpenGL ist nicht thread-safe. Daher solltest du keinen OpenGL Kontext in mehreren Threads benutzen!