我想在我的(用C ++编写的OpenGL)应用程序中使用红线而不是鼠标指针。例如,当我将鼠标移到OpenGL窗口上时,我希望光标变成红线。我怎么能这样做?
另外,如何调用该行的鼠标相关功能(OpenGL)并指定功能?
答案 0 :(得分:0)
正如Nicol Bolas在评论中所说,OpenGL对鼠标一无所知。您需要以某种方式与窗口系统交互(通过直接Win32 / X11 /等API或通过便携式窗口库,如Qt,wxWidgets等)来监控鼠标位置。
如果您尝试绘制的光标是位图,最好的办法是处理发送到窗口的鼠标进入/离开事件,并使用API函数更改光标来响应它们。当鼠标移动时,这将处理自动更新光标,并且会增加应用程序的最小开销(窗口系统游标通常在覆盖平面中绘制,避免每次鼠标移动时将重绘事件发送到窗口。)
如果您对光标有更多程序描述(也就是说,您打算使用OpenGL绘图命令绘制它),则您需要使用HideCursor()/ShowCursor()
命令处理鼠标进入/离开事件或相当于当鼠标悬停在窗口上时关闭窗口系统的本机光标。然后,您将挂钩鼠标移动回调并重新绘制场景,添加在鼠标移动事件中指定的位置绘制光标所需的任何命令。
第一种方法绝对是性能优先的方法。延迟原因 - 但有一些光标类型(想想全屏十字准线)无法以这种方式容纳。