如何在c++ opengl中使用鼠标滚动对象
How to scroll an object with a mouse in c++ opengl:
我正在尝试在openglc++中制作2d游戏。我想用鼠标移动来滚动一个三角形。我先画一个三角形。到目前为止,当我移动鼠标时,我成功地使三角形滚动。
我用了这两行:
case WM_MOUSEMOVE:
X += (GLfloat)LOWORD(lParam);
然后,在绘图函数中,我这样做:
glTranslatef(x,0.0f,0.0f);
因此,到目前为止,三角形随着鼠标的移动而移动。但问题是,我希望当我向左移动鼠标时它向左移动,当我向右移动鼠标时它向右移动。
无论我如何移动鼠标,三角形都向右移动,从不向左移动。即使我上下移动鼠标,它也会向右移动。
我该如何解决这个问题?
这与glTranslatef相对于当前矩阵进行翻译的事实有关:每次翻译时,它都被添加到(技术上说是与)当前状态相乘。
您可能想要使用=
而不是+=
,并在那里添加glloadiidentity。我通常在每一帧的开始调用glloadiidentity。它将矩阵重置为初始状态,这意味着平移会像你期望的那样工作。有关glloadiidentity的更好解释,以及它背后的数学原理,请参阅这个问题。
相关文章:
- 使用一个考虑到std::map中键值的滚动或换行的键
- WinAPI挂钩鼠标
- QScrollArea:由垂直滚动条引起的水平滚动条
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 跟踪滚动条上的鼠标事件
- 我在QChartView中找不到缩放图形的鼠标滚轮滚动事件
- 使用鼠标滚轮平滑地滚动QTableWidget
- 鼠标滚动滚动滚动
- OpenCV 鼠标事件始终在鼠标滚动时接收事件 10 和 *flag* 0
- 发生鼠标滚动事件时如何响应
- 鼠标滚轮只能向上或向下滚动
- 富编辑控件中的鼠标滚轮滚动滞后/缓慢.如何解决此问题
- 如何接收 QGraphicsView 的滚动条鼠标事件
- 使QSliders忽略鼠标滚轮/滚动
- 如何模拟当前打开窗口的鼠标滚动
- 如何获得鼠标滚轮垂直滚动速率
- 如何在c++ opengl中使用鼠标滚动对象
- 删除鼠标滚轮QGraphics视图上的滚动功能
- 阻止控件的鼠标滚轮滚动
- 捕捉全局鼠标滚动,并向应用程序发送自定义鼠标滚动事件