OpenGL/GLFW:为啥将电视用作笔记本电脑的主显示器时检测到的鼠标位置不正确?

Posted

技术标签:

【中文标题】OpenGL/GLFW:为啥将电视用作笔记本电脑的主显示器时检测到的鼠标位置不正确?【英文标题】:OpenGL/GLFW: Why is the detected mouse position incorrect when using a TV as the primary display for my laptop?OpenGL/GLFW:为什么将电视用作笔记本电脑的主显示器时检测到的鼠标位置不正确? 【发布时间】:2016-07-22 15:15:00 【问题描述】:

我的鼠标连接到我的笔记本电脑,我的笔记本电脑通过 HDMI 连接到电视。仅使用笔记本电脑的屏幕作为主显示器时,鼠标的位置是完美的,完全没有问题,而使用 Windows(笔记本电脑屏幕或电视作为显示器)时没有问题使用鼠标 - 仅在我的 GLFW 应用程序中,当外部屏幕用作主显示器时。我使用返回 vec2 的回调函数获取鼠标的位置,该函数使用glfwSetCursorPosCallback() 设置,因此我可以使用mousePos.xmousePos.y 查看每帧鼠标的坐标。

鼠标位置的具体误差:

当鼠标移动时,检测到的位置会发生变化,但是当鼠标停止移动时,检测到的位置不会停止变化。这可以被描述为将鼠标放在冰上,因此当它移动时,位置会不断变化,并且永远不会减速。所以位置是准确的,但它与鼠标的物理移动并不对应,因为 - 如前所述 - 我停止移动鼠标,但位置只是以恒定的速率永远增加。

当使用鼠标位置移动到相机周围时,可以最明显地看到这一点 - 即使鼠标静止,相机也会继续旋转。

为什么使用外部显示器会对鼠标位置/移动检测产生这种影响?

【问题讨论】:

【参考方案1】:

我现在已经解决了。对于将来发现此问题的任何人...使用最新版本的 GLFW!我使用的特定版本 (3.1.2) 与 glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN) 存在问题,导致光标出现奇怪的移动。

这已在 3.2 更新中修复 - 如果您遇到此问题,请确保您使用的是这个!

【讨论】:

以上是关于OpenGL/GLFW:为啥将电视用作笔记本电脑的主显示器时检测到的鼠标位置不正确?的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL glfw无法绘制点数

我的电视能够连wifi,如何将电脑投影到电视上?

OpenGL / GLFW 显得透明

OpenGL 3/GLFW 空白视口

使用 Opengl CORE 函数和 Comptability profile - GLFW

我用电视做电脑显示器为啥只有640*480的分辨率