Luc*_*lon 24 opengl graphics cursor hardware-acceleration
有没有人可以解释硬件光标如何正常工作?它与我在屏幕上绘制的图形有什么关系?我正在使用OpenGL绘制,硬件光标如何与OpenGL图形相关?
编辑:对于那些可能对此感兴趣的人,我刚刚实现了用硬件显示光标所需的内容.实现在内核中并且使用它简单的ioctl就足够了.完美的工作.
dat*_*olf 33
硬件光标意味着GPU提供在屏幕帧缓冲区上绘制(小)覆盖图像,该位置可以由GPU上的两个寄存器(或左右)改变.因此,在指针周围移动不需要重绘先前被阻挡的帧缓冲区部分.
与OpenGL的关系:没有!
phk*_*ler 10
OpenGL不渲染或不支持硬件光标。一些小的硬件会将其覆盖在显示连接器输出的任何图像上-在每帧扫描时将其直接插入到位流中。因此,可以通过更改一对包含其坐标的硬件寄存器来移动它。在过去,它们被称为子画面,并且在不同的系统上支持各种数量的子画面。
硬件游标的延迟较少,因此可提供更好的体验,因为它们与游戏或引擎帧速率无关,而与屏幕刷新率有关。
但是,在渲染循环期间由您渲染为屏幕空间精灵的软件游标必须以游戏引擎的速度运行。因此,如果您的游戏出现延迟或以其他方式下降到目标fps以下,则光标延迟会变得更糟。通常,游戏fps的小幅下降是可以接受的,但作为“缓慢的游标”,光标延迟的小幅下降是非常明显的。
您可以通过在保持硬件光标不变的情况下呈现软件光标来轻松测试。(仅供参考,在Windows API中,硬件光标功能是ShowCursor)。您会发现软件光标落后于硬件光标。