首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >帧缓冲区输出图形撕裂,FBIO_WAITFORVSYNC和FBIOPAN_DISPLAY失败

帧缓冲区输出图形撕裂,FBIO_WAITFORVSYNC和FBIOPAN_DISPLAY失败
EN

Stack Overflow用户
提问于 2014-10-10 10:32:39
回答 1查看 3.5K关注 0票数 0

这个问题是关于linux帧缓冲区的,这张图是撕裂的。

最近我的工作是将桌面输出到SDI显卡,然后我就有了使用帧缓冲的想法。这是好的,它输出成功,但它有一个大问题,图形是撕裂的。我想使用FBIO_WAITFORVSYNC和FBIOPAN_DISPLAY来解决它,但它们都返回-1。ioctl(fd,FBIO_WAITFORVSYNC,0)错误号: 25 (设备的ioctl不合适) ioctl(fb,FBIOPAN_DISPLAY,&vi),错误号: 22 (无效参数)

我使用的操作系统是Ubuntu 12.04,安装fbset后,我发现fb.h中包含了两个ioctl命令。现在的问题是如何让FBIO_WAITFORVSYNC和FBIOPAN_DISPLAY很好地工作。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2014-12-01 03:13:01

错误代码不是互换的吗?如果是这样,您可以尝试:

代码语言:javascript
复制
    int zero = 0;
    ioctl(fd, FBIO_WAITFORVSYNC, &zero);

如果不支持FBIOPAN_DISPLAY,并且帧缓冲区大小至少为2个屏幕(对照分辨率和像素深度检查fixInfo.smem_len ),请尝试:

代码语言:javascript
复制
    static int bufferNumber = 0;
    //Assume the frame buffer has more memory than
    //just just 1 screen - either set xoffset or 
    //yoffset to flip to another page. 
    varInfo.yoffset = varInfo.yres * bufferNumber;
    ioctl(fd, FBIOPUT_VSCREENINFO, &varInfo);
    //now flip the buffer to which to render to
    bufferNumber = 1 - bufferNumber;
    //now render to appropriate frame-buffer page
    //assuming we change yoffset to switch pages
    pageBuffer = fixInfo.smem_start + 
                 (bufferNumber * 
                 (fixInfo.line_length / (varInfo.bits_per_pixel / 8) * 
                 varInfo.yres ));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26291050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档