如何提高帧率并减少C中的闪烁?

时间:2013-12-19 12:15:47

标签: c graphics game-physics frame-rate

我在C中编写了一个小图形应用程序,其中我在其中画了一个方框和一个圆圈(就像房间里的一个球)。当圆圈触及其中一个边界时,它会反弹回来。

我使用了以下示例代码:

xVelocity = 5;
yVelocity = 5;

if(circle.x <= 0) {
    xVelocity = 5;
}

if(circle.y <= 0) {
    yVelocity = 5;
}

if(circle.x>=box.width) {
    xVelocity = -5;
}

if(circle.y>=box.breadth) {
    yVelocity = -5;
}

drawCircle();

我使用50ms的刷新率来循环更新位置并绘制圆圈。 然而,当我通过减少刷新时间或增加速度来增加圆的速度时,会发生闪烁。此外,如果我增加速度,圆圈会在检测到碰撞之前超出范围。我用Turbo C编写了这个程序。

我想知道如何提高帧速率,以免发生闪烁。这个问题还有其他解决办法吗?

2 个答案:

答案 0 :(得分:2)

减少闪烁的一种方法是将图形输出与监视器同步,只有在垂直空白处才重绘。

另一种选择是使用后备缓冲。您将绘制到图形显示的副本,完成后,将其放在屏幕上。

答案 1 :(得分:1)

背景被删除时会引起闪烁。

解决方案是在不同的表面(后缓冲区)上绘制,并且只有在完成后将其复制到显示/渲染缓冲区