我正在使用C语言编写一款在Linux framebuffer上运行的游戏。目前我有一个100x100的红色正方形,它跟随着鼠标移动,就像一个指针。我已经实现了双缓冲并且它可以正确地工作(正方形不会闪烁)。然而,问题是在水平方向上存在相当大的撕裂。我的意思是,当正方形在X轴上移动时,它好像被水平地分成了两部分,并且其中一部分比另一部分稍微多移动了一点。如果我继续移动它,这个“撕裂”就会从顶部逐渐向下传播到整个正方形。
我认为这是因为硬件在我将双缓冲区拷贝到主缓冲区的那一刻读取了framebuffer。
我尝试使用FBIO_WAITFORVSYNC ioctl来解决这个问题,但没有成功。
请问有什么方法能够在framebuffer上进行VSync吗?由于这是我第一次在基于Linux的操作系统上编写此类代码,所以请详细说明,否则我可能无法理解。
这是我的代码:http://pastebin.com/KJ4iaVEL
我认为这是因为硬件在我将双缓冲区拷贝到主缓冲区的那一刻读取了framebuffer。
我尝试使用FBIO_WAITFORVSYNC ioctl来解决这个问题,但没有成功。
请问有什么方法能够在framebuffer上进行VSync吗?由于这是我第一次在基于Linux的操作系统上编写此类代码,所以请详细说明,否则我可能无法理解。
这是我的代码:http://pastebin.com/KJ4iaVEL