2012-03-23 1 views
0

最近私はOpenGLを使いこなしていましたが、ウィンドウのサイズを変更しようとするとウィンドウズメッセージポンプがブロックされていることに気づいたので、メニューバーをクリックするかサイズを変更すると結果レンダリングが停止します窓。OpenGLゲームループマルチスレッド

これを修正するために、私はマルチスレッドを検討しています。私は、次のしている

_beginthread(RenderEntryPoint, 0, 0); 

while (!done) 
{ 
    PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE); 

    if (msg.message == WM_QUIT) 
    { 
     done = true; 
    } 
    else 
    { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 
} 

void RenderEntryPoint(void *args) 
{ 
    while (1) 
    { 
     //render code 
    } 
} 

をしかし、私のシーンがレンダリングされていない、と私はなぜわかりません。

答えて

5

レンダリングスレッドでOpenGLレンダリングコンテキストを最新にする必要があります。は、現在のウィンドウスレッドでないことを確認してください。これはまた、 OpenGL関数をウィンドウスレッドから呼び出すことができないことを意味します。

+0

ああ、ありがとうございます。 –