Graphics.h обновить экран

Я сделал небольшую программу, которая отображает 3d-куб, который можно масштабировать по любой оси с помощью клавиш со стрелками. Единственная проблема в том, что я использую cleardevice(); для обновления куба (чтобы не было «размазывания» при масштабировании куба). это прекрасно работает, просто каждый раз, когда куб обновляется с помощью этого метода, экран на долю секунды становится черным, что приводит к раздражающему мерцанию. Есть ли лучший способ обновления экрана каждый раз, когда пользователь меняет куб?
Я действительно исследовал это, но я не смог найти что-то подходящее (может, я просто плохо разбираюсь в исследованиях, но я не смог найти что-нибудь для себя)

0

Решение

Есть 2 способа справиться с этим:

  1. Двойная буферизация

    я не использую BGI поэтому я придерживаюсь их документов. для WinBGIm вы можете использовать

    По старому стилю BGI использовать этот:

    int oldv = getvisualpage( );
    int olda = getactivepage( );
    setvisualpage(olda);
    setactivepage(oldv);
    
  2. использовать вертикальную синхронизацию с монитором

    Вам нужно ждать VSync перед звонком cleardevice();, На DOS ты можешь использовать VGA BIOS или прямой VGA / VESA доступ для получения сигнала. На высшем Операционные системы вам нужно использовать какой-то GFX API или водитель API получить VSync.

    В обоих случаях обратитесь к документации для целевой платформы.

0

Другие решения

Других решений пока нет …