Bonjour,
Voici mon problème : j'ai une classe GL_Window qui me permet de faire du rendu OpenGL, j'ai donc mon membre Render appelé à l'aide d'un timer :
Dans ce cas-là, tout va bien, CPU à 0%, très fluide. Sauf que je me suis dit que j'allais créer un thread qui permette de décorreller l'affichage et le reste. J'ai donc un pointeur vers un RenderingThread hérité d'un wxThread dans GL_Window. Et je fais ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void GL_Window::Render() { ProcessRendering(); } void GL_Window::ProcessRendering() { // Rend et affiche par des fonctions OpenGL... }
Et là, c'st le drame. Le simple fait de passer par un thread pour faire le rendu me pourrit l'application : CPU à 100% ou pas loin, et évidemment ça rame.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 void GL_Window::Render() { if( !RThread ) { RThread=new RenderingThread(this); if( RThread->Create() == wxTHREAD_NO_ERROR ) { RThread->Run(); } } } void GL_Window::ProcessRendering() { // Rend et affiche par des fonctions OpenGL... } void* RenderingThread::Entry() { Parent->ProcessRendering(); } void RenderingThread::OnExit() { Parent->RThread=NULL; }
Quelqu'un aurait une idée de l'origine du problème ??
Partager