Мерцание при перетаскивании окна с 3D рендерингом (комментарии)
Это сообщение сгенерировано автоматически.
Правильнее так
case WM_ERASEBKGND: return 1;
Еще сделать
case WM_NCPAINT: return 0;
и все должно пройти. Если и после этого будут глюки - включить двойную буферизацию.
можно цикл в конце WinMain на такой изменить:
while(msg.message != WM_QUIT)
{
if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}else
Rendering();//функция рендеринга DX
}
как то так а
case WM_PAINT:
Rendering();
убрать можно
тока msg надо обнулить ZeroMemory(&msg, sizeof(MSG));
у меня всё норм идёт
shadero
Я вообще ничего не вывожу пока идет перетаскивание.
а лучше всё таки d3dpp.windowed = false; и проблем нет потому что окна не видно
d3dpp это D3DPRESENT_PARAMETERS
пять с плюсом за последнее решение! особенно, если человеку нужен оконный режим! (:
P.S. вы еще на дату нулевого поста посмотрите.
bool
Да, ладно. Зато разобрались все...
Ну, эт да, главное, что разобрались, но вообще, я считаю, что для реалтайм рендеринга не нужно юзать WM_PAINT. не потому что это плохо, а потому что: зачем?
while (running) { while (PeekMessage(...)) { TranslateMessage(&msg); DispatchMessage(&msg); } if (windowActive) render(); }
bool
> while (running) {
> while (PeekMessage(...)) {
> TranslateMessage(&msg);
> DispatchMessage(&msg);
> }
>
> if (windowActive) render();
> }
+1
ЗЫ
некрофилы :))))
Кстати.
while (running) { while ( PeekMessage( ...)) { TranslateMessage( &msg); DispatchMessage( &msg); } if ( windowActive) render( ); }
vs
while (_running) { if ( PeekMessage( &msg, 0, 0, 0, PM_REMOVE)) { TranslateMessage( &msg); DispatchMessage( &msg); } else { idle( ); } }
Пора бы уже исправить ошибку, на которую указал Sergio. И добавить совет Deamon.
Подправил.
Алмаз
> добавить совет Deamon
В его случае не будет рисоваться фрейм окна.
Алмаз
> исправить ошибку
Спорно что лучше указывать в возвращаемом значении - что фон был очищен или нет.
shadero
> не будет рисоваться фрейм окна.
Так и задумано, если приложение полноэкранное.
Тема в архиве.