Linux framebuffer图形和VSync

Linux framebuffer图形和VSync,第1张

概述我正在用C语言制作适用于 linux framebuffer的游戏.到目前为止,我有一个红色的100×100正方形,与鼠标一起移动,就像指针一样.我实现了双缓冲,它工作正常(方块不闪烁).问题是,横向发生了很多撕裂事件.我的意思是,当正方形在x轴上移动时,它就像它被水平分割,并且它的一部分比另一部分更加柔和.如果我继续移动它,这个“裂口”会在广场上从上到下慢慢传播. 我相信这是因为硬件在我将双缓冲 我正在用C语言制作适用于 linux framebuffer的游戏.到目前为止,我有一个红色的100×100正方形,与鼠标一起移动,就像指针一样.我实现了双缓冲,它工作正常(方块不闪烁).问题是,横向发生了很多撕裂事件.我的意思是,当正方形在x轴上移动时,它就像它被水平分割,并且它的一部分比另一部分更加柔和.如果我继续移动它,这个“裂口”会在广场上从上到下慢慢传播.

我相信这是因为硬件在我将双缓冲区复制到主缓冲区的那一刻读取帧缓冲区.

我试图用FBIO_WAITFORVSYNC ioctl解决问题,但没有成功.

我有什么想法可以在帧缓冲区上做VSync吗?请在您的解释中添加细节,因为这是我第一次在基于Linux的 *** 作系统上编程这样的东西,所以我可能不会理解.

这是我的代码:http://pastebin.com/KJ4iaVEL

解决方法 这不是进行双缓冲的正确方法.你可以在后台缓冲区上进行所有绘画,但是你可以使用memcpy将数据传输到前面.复制过程中很容易发生屏幕刷新.

要正确地执行此 *** 作,您只需要切换指向数据的指针;不要复制数据本身.使用linux帧缓冲设备,这是通过具有两倍于物理屏幕的“虚拟”屏幕并使用偏移变量来设置是显示上半部分还是下半部分来完成的.您可以使用FBIOGET_VSCREENINFO,FBIOPUT_VSCREENINFO和FBIOPAN_disPLAY ioctl调用查询大小和设置偏移量.

本页简要介绍了一些有关此内容的详细信息:http://www.ummon.eu/Linux/API/Devices/framebuffer.html

所有相关的数据结构都在linux / fb.h头文件中.

总结

以上是内存溢出为你收集整理的Linux framebuffer图形和VSync全部内容,希望文章能够帮你解决Linux framebuffer图形和VSync所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1027174.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存