直接访问linux framebuffer – copyarea

直接访问linux framebuffer – copyarea,第1张

概述我想在嵌入式 Linux应用程序中快速移动一个矩形到帧缓冲区.我发现cfb_copyarea函数可能很有用.但我无法在/ dev / fb设备上找到任何ioctl来调用该函数.或者可以直接调用此函数吗? 这是一个初始化和关闭FrameBuffer的代码 class CFrameBuffer{void* m_FrameBuffer;struct fb_fix_screeninfo m_ 我想在嵌入式 Linux应用程序中快速移动一个矩形到帧缓冲区.我发现cfb_copyarea函数可能很有用.但我无法在/ dev / fb设备上找到任何ioctl来调用该函数.或者可以直接调用此函数吗?解决方法 这是一个初始化和关闭FrameBuffer的代码
class CFrameBuffer{voID*   m_FrameBuffer;struct  fb_fix_screeninfo m_FixInfo;struct  fb_var_screeninfo m_VarInfo;int     m_FBFD;int InitFB(){    int iframeBufferSize;    /* Open the framebuffer device in read write */    m_FBFD = open(FB_name,O_RDWR);    if (m_FBFD < 0) {        printf("Unable to open %s.\n",FB_name);        return 1;    }    /* Do Ioctl. RetrIEve fixed screen info. */    if (ioctl(m_FBFD,FBIOGET_FSCREENINFO,&m_FixInfo) < 0) {        printf("get fixed screen info Failed: %s\n",strerror(errno));        close(m_FBFD);        return 1;    }    /* Do Ioctl. Get the variable screen info. */    if (ioctl(m_FBFD,FBIOGET_VSCREENINFO,&m_VarInfo) < 0) {        printf("Unable to retrIEve variable screen info: %s\n",strerror(errno));        close(m_FBFD);        return 1;    }    /* Calculate the size to mmap */    iframeBufferSize = m_FixInfo.line_length * m_VarInfo.yres;    printf("line length %d\n",m_FixInfo.line_length);    /* Now mmap the framebuffer. */    m_FrameBuffer = mmap(NulL,iframeBufferSize,PROT_READ | PROT_WRITE,MAP_SHARED,m_FBFD,0);    if (m_FrameBuffer == NulL) {        printf("mmap Failed:\n");        close(m_FBFD);        return 1;    }    return 0;}voID CloseFB(){    munmap(m_FrameBuffer,0);    close(m_FBFD);}};
总结

以上是内存溢出为你收集整理的直接访问linux framebuffer – copyarea全部内容,希望文章能够帮你解决直接访问linux framebuffer – copyarea所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/yw/1049532.html

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

发表评论

登录后才能评论

评论列表(0条)

保存