首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C+ Linux:如何接管框架缓冲区

C+ Linux:如何接管框架缓冲区
EN

Stack Overflow用户
提问于 2015-09-16 22:49:25
回答 1查看 3.1K关注 0票数 3

我有一个直接呈现到框架缓冲区的OpenGL应用程序。

如果我从终端启动应用程序,有时我会看到光标在我的应用程序后面闪烁。同样,如果我从X中的终端仿真器中启动它,如果我移动鼠标,就会看到鼠标在后面移动。

我的应用程序目前呈现为45 the,所以低帧速率不应该是问题。

我注意到,当X启动时,它似乎在开始呈现之前清除了shell,但是当您稍后关闭X服务器时,发送给stdout的诊断信息又回来了,所以我怀疑它是否发出了一个清晰的命令。

我想要做的事是怎样完成的?您可以简单地向fb1呈现并告诉视频输出从fb1显示,而不是为了fb0而斗争吗?那么,当应用程序死亡时,您可以将显示返回到fb0吗?

编辑:

为了澄清这一点,该应用程序正在为ARM SoC (飞思卡尔i.MX6)上的嵌入式系统开发,Vivante和ArchLinux ARM都在运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-17 17:05:40

我有一个直接呈现到框架缓冲区的OpenGL应用程序。

为了澄清这一点:你使用KMS + DRI/DRM + GBM来做这件事,对吗?

如果我从shell启动应用程序,有时我会看到光标在我的应用程序后面闪烁。

你搞混了几个术语。shell是为您提供命令的程序,如作业控制、stdio重定向、脚本支持等等。您可能指的是Linux内核虚拟终端控制台(Linux )。

当启动直接使用框架缓冲设备的程序时,必须将进程使用的虚拟终端放入图形模式 (KDSETMODE)。

同样,如果我从X中的终端仿真器中启动它,如果我移动鼠标,就会看到鼠标在后面移动。

在从X11环境启动时,X11服务器是VT和图形模式的独占所有者。所有图形操作必须通过X11服务器。就系统设计而言,任何试图触摸它不拥有的fbdev的程序都应该被击中(立即发送一个SIGSEGV)。不要这样做。就这样,没有讨论。X11服务器拥有VT,而当VT处于活动状态时,fbdev。

相反,您可以为您的程序分配一个自己的VT,并让它使用它。但是,只有当X11服务器没有运行并且控制台切换到程序的VT时,您才能获得图形输出。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32620019

复制
相关文章

相似问题

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