Я создаю приложение для рисования, которое отображает OpenGL, когда получает WM_SCROLL или WM_MOUSEMOVE. Дело в том, что движений мыши много, и мне нужно, чтобы она отображала максимум 60 кадров в секунду. Поэтому я создал bool в своем классе двигателей под названием CanRender. поэтому в моем render () proc я делаю:
если (! CanRender)
{
вернуть;
}
CanRender = false;
В основном это предотвращает рендеринг более 60 кадров в секунду.
Я создаю таймер в WM_CREATE.
когда я получаю WM_TIMER, я устанавливаю CanRender в true.
Я издала звуковой сигнал, поэтому знаю, что таймер работает.
Как только я начинаю прокручивать или перемещать мышь, звуковой сигнал прекращается, и я больше не вижу рендеринга. Почему это остановит мой таймер? Кроме того, когда я сворачиваю таймер, таймер запускается снова, а затем снова увеличивается, он снова останавливается.
Спасибо
Сообщение насоса:
// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
создание:
case WM_CREATE:
//Set Window Title
SetWindowText(hWnd,engineGL.current.caption.c_str());
SetTimer(hWnd, // handle to main window
120, // timer identifier
17, // 60 fps interval
(TIMERPROC) NULL); // no timer callback