【发布时间】:2012-12-16 14:10:16
【问题描述】:
我正在用 C 语言制作一个在 linux 帧缓冲区上运行的游戏。到目前为止,我有一个红色的 100x100 正方形,它与鼠标一起移动,就像一个指针一样。我已经实现了双缓冲并且它工作正常(正方形不闪烁)。问题是,横向发生了很多撕裂。我的意思是,当正方形在x轴上移动时,就像它被水平分割,它的一部分比另一部分进展得更快。如果我继续移动,这个“裂口”会在广场上从上到下缓慢传播。
我相信这是因为硬件在我将双缓冲区复制到主缓冲区的那一刻读取帧缓冲区。
我已尝试使用 FBIO_WAITFORVSYNC ioctl 解决该问题,但没有成功。
有什么想法可以在帧缓冲区上进行垂直同步吗?请在您的解释中添加详细信息,因为这是我第一次在基于 Linux 的操作系统上编写此类内容,因此我可能无法理解。
这是我的代码:http://pastebin.com/KJ4iaVEL
【问题讨论】:
-
您使用什么视频硬件?例如,Linux 在 Sandy Bridge 英特尔显卡方面存在撕裂问题。请澄清。
-
@vorbote 我有一个 Nvidia 7800 GTX,抱歉没有提到。正常使用没有撕裂(例如当我在 X 中移动窗口时)。
标签: linux graphics framebuffer