0

我做了一个小程序,它显示一个 3d 立方体,您可以使用箭头键在任何轴上缩放。唯一的问题是我使用它cleardevice();来刷新立方体(这样在缩放立方体时就没有“拖尾”)。效果很好,只是每次使用这种方法刷新立方体时,屏幕会瞬间变黑,从而导致烦人的闪烁。每次用户更改立方体时是否有更好的刷新屏幕的方法?我确实对此进行了研究,但我找不到任何合适的东西(也许我只是不擅长研究,但我找不到任何适合我生活的东西)

4

1 回答 1

1

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

  1. 双缓冲

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

    在老式BGI上使用这个:

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

    在调用 之前,您需要等待VSynccleardevice();。在DOS上,您可以使用VGA BIOS或直接VGA/VESA访问来获取信号。在更高的操作系统上,您需要使用某种 gfx API或 Driver API来获取VSync

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

于 2016-03-15T07:56:41.230 回答