我用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
来编写这个程序。
我想知道如何提高帧速率,以免发生闪烁。这个问题还有其他解决方案吗?
重新闪烁的一种方法是将图形的输出同步到显示器,并且仅在垂直空白时才重新绘制它。
另一种选择是使用后台缓冲区。您绘制图形显示的副本,完成后,将其放在屏幕上。
背景时会导致闪烁。
解决方案是在不同的表面(后台缓冲区)上绘制,并且只有在完成时才将其复制到显示/渲染缓冲区