有没有人可以解释硬件光标如何正常工作?它与我在屏幕上绘制的图形有什么关系?我正在使用OpenGL绘制,硬件光标如何与OpenGL图形相关?
编辑:对于那些可能对此感兴趣的人,我刚刚实现了用硬件显示光标所需的内容。实现在内核中并且使用它简单的ioctl就足够了。效果很好。
答案 0 :(得分:31)
硬件光标意味着GPU提供在屏幕帧缓冲区上绘制(小)覆盖图片,该位置可以由GPU上的两个寄存器(或左右)更改。因此,在指针周围移动不需要重绘先前被阻挡的帧缓冲区部分。
与OpenGL的关系:无!
答案 1 :(得分:7)
OpenGL不呈现或支持硬件光标。一些小硬件覆盖在显示连接器上的任何图像上 - 它在每帧扫描时直接插入比特流。因此,可以通过更改包含其坐标的一对硬件寄存器来移动它。在过去,这些被称为精灵,不同系统支持不同数量的精灵。
答案 2 :(得分:5)
硬件游标具有较少的延迟,因此可以提供更好的体验,因为它们与游戏或引擎帧速率无关,而与屏幕刷新率无关。
然而,在渲染循环期间由您呈现为屏幕空间精灵的软件游标必须以游戏引擎的速率运行。因此,如果您的游戏经历滞后或低于目标fps,则游标延迟将变得更糟。游戏fps的微小下降通常是可以接受的,但游标延迟的微小下降作为“缓慢的光标”非常明显。
您可以通过在保持硬件光标打开的同时渲染软件光标来轻松测试。 (仅供参考,在Windows API中,hw游标功能是ShowCursor)。你会发现软件光标落后于硬件光标。