我在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
编写了这个程序。
我想知道如何提高帧速率,以免发生闪烁。这个问题还有其他解决办法吗?
答案 0 :(得分:2)
减少闪烁的一种方法是将图形输出与监视器同步,只有在垂直空白处才重绘。
另一种选择是使用后备缓冲。您将绘制到图形显示的副本,完成后,将其放在屏幕上。
答案 1 :(得分:1)
背景被删除时会引起闪烁。
解决方案是在不同的表面(后缓冲区)上绘制,并且只有在完成后将其复制到显示/渲染缓冲区