Я сделал небольшую программу, которая отображает 3D-куб, который можно масштабировать по любой оси с помощью клавиш со стрелками. Единственная проблема в том, что я использую cleardevice();
для обновления куба (чтобы не было «размазывания» при масштабировании куба). это прекрасно работает, просто каждый раз, когда куб обновляется с помощью этого метода, экран становится черным на долю секунды, что приводит к раздражающему мерцанию. Есть ли лучший способ обновлять экран каждый раз, когда пользователь меняет куб? Я на самом деле исследовал это, но не смог найти ничего подходящего (может быть, я просто плохо исследовал, но я не мог найти ничего для себя)
Экран обновления Graphics.h
comment
То, что вы ищете, это двойная буферизация.
- person H. Guijt   schedule 15.03.2016
Ответы (1)
есть 2 способа справиться с этим:
Двойная буферизация
Я не использую BGI, поэтому придерживаюсь их документации. для WinBGIm вы можете использовать
В старом стиле BGI используйте это:
int oldv = getvisualpage( ); int olda = getactivepage( ); setvisualpage(olda); setactivepage(oldv);
использовать вертикальную синхронизацию с монитором
Перед вызовом
cleardevice();
необходимо дождаться VSync. В DOS вы можете использовать VGA BIOS или прямой доступ VGA/VESA для получения сигнала. В более поздних версиях OS вам необходимо использовать API gfx или API драйвера, чтобы получить VSync.В обоих случаях обратитесь к документации для целевой платформы.
person
Spektre
schedule
15.03.2016