Здравствуйте Lostar, Вы писали:
L>Здравствуйте Аноним, Вы писали:
L>Ты Lock() делаешь на primary surface или на back buffer?
Эти штучки мы уже проходили, как только не пробовали...
Ясное дело, что Lock'ать надо первичную поверхность,
с вторичной тормоза еще больше...
И кстати, если все правильно, то делать надо примерно так:
// Цикл обработки сообщений:
Если сообщение есть, то его обрабатываем, если нет- перерисовываем экран и флипаем его.
//
while(!closeflag)
{
if (PeekMessage(&Msg, ...)
{
GetMessage(...);
tRANSLATEmESSAGE(...);
DispatchMessage(..);
}
else
UpdateFrame();
}
// Ну а в проце UpdateFrame()
// мы пишем что нибудь
void UpdateFrame(void)
{
// Blit some bitmaps
ImageSurface->BltFast(...)
.....
// А теперь тормозим до FPS 0.0000001
DDSURFACEDESC ddsd;
zeromemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
if (PrimarySurface-> Lock(,DDLOCK_WAIT) == DD_OK)
{
// Кладем точку по адресу, кладем другую...
(WORD *)ddsd.lpSurface + 10;
}
Ну вот, значит, а если там, в этих {} написать циклец
на десяток-другой тысяч точек, что все провисает
и FPS снижается до вышеуказанной величины.
}
Заранее благодарен за любые дельные советы по данному
вопросу. и еще: если у Вас есть прога с нетормозящим Lock'oм
просьба выдрать из него процу прорисовки и прислать сюда.