Graphics.h刷新屏幕

时间:2016-03-14 21:39:28

标签: c++ graphics header bgi

我制作了一个小程序,显示一个3d立方体,您可以使用箭头键在任何轴上缩放。唯一的问题是我使用cleardevice();来刷新立方体(这样在缩放立方体时没有“拖尾”)。只是每次使用这种方法刷新立方体时,屏幕会变黑并导致恼人的闪烁。每次用户更改多维数据集时,是否有更好的刷新屏幕的方法? 我确实研究了这个,但我找不到任何合适的东西(也许我只是在研究方面很差但我找不到任何适合我的生活)

1 个答案:

答案 0 :(得分:0)

有两种方法可以解决这个问题:

  1. 双缓冲

    我不使用 BGI ,所以我坚持使用他们的文档。对于WinBGIm,您可以使用

    在oldstyle BGI 上使用此:

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

    在致电cleardevice();之前,您需要等待 VSync 。在 DOS 上,您可以使用 VGA BIOS 或直接 VGA / VESA 访问来获取信号。在较高的操作系统上,您需要使用某种gfx API 或驱动程序 API 来获取 VSync

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