2016-03-14 167 views
0

我做了一个小程序,显示一个3D立方体,您可以使用箭头键在任何轴上缩放。唯一的问题是,使用cleardevice();来刷新立方体(所以在缩放立方体时没有“拖尾”现象)。工作正常,只是每次使用此方法刷新多维数据集时,屏幕都会瞬间黑屏,导致令人讨厌的闪烁。每当用户更改立方体时,是否有更好的方式来刷新屏幕? 我没有真正研究这一点,但我不是能找到什么合适的(在研究也许我只是坏,但我无法找到我的在场的任何东西)Graphics.h刷新屏幕

+3

您正在寻找的东西是“双缓冲”。 –

回答

0

有2种方式来处理这个问题:

  1. 双缓冲

    我不使用BGI所以我坚持自己的文档。为WinBGIm可以使用

    在旧式BGI使用本:

    int oldv = getvisualpage(); 
    int olda = getactivepage(); 
    setvisualpage(olda); 
    setactivepage(oldv); 
    
  2. 使用垂直同步与显示器

    你需要等待VSync,然后致电cleardevice();。上DOS你可以使用VGA BIOS或直接VGA/VESA获取信号。在更高的OS您需要使用某种gfx API或驱动程序API以获得VSync

    在这两种情况下,请参阅目标平台的文档。