OpenGL Game Loop Многопоточность - PullRequest
0 голосов
/ 23 марта 2012

В последнее время я возился с OpenGL и заметил, что насос сообщений Windows блокирует каждый раз, когда я пытаюсь изменить размер окна, поэтому в результате рендеринг останавливается, когда я нажимаю на строку меню или изменяю размер окна. 1001 *

Чтобы это исправить, я изучаю многопоточность.

У меня есть следующее:

_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
    }
}

Однако моя сцена не визуализируется, и я не знаю почему.

1 Ответ

5 голосов
/ 23 марта 2012

Вам нужно сделать контекст рендеринга OpenGL текущим в потоке рендеринга, и убедитесь, что он не актуален в потоке окон.Это также означает, что вы не можете вызывать любые функции OpenGL из оконного потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...