5
我一直在研究OpenGL中的演示,并一直试图实现类似fps的鼠标外观相机。我一直在使用Max OSX Leopard,因此我不得不使用Carbon来获取屏幕坐标,并在移动后将鼠标移回屏幕中心,大多数情况下都能正常工作。下面是我的鼠标方法相关的代码:试图让在Mac OSX上的OpenGL中使用鼠标外观的相机
CGPoint pnt;
pnt.x = glutGet(GLUT_WINDOW_WIDTH)/2 + glutGet(GLUT_WINDOW_X);
pnt.y = glutGet(GLUT_WINDOW_HEIGHT)/2 + glutGet(GLUT_WINDOW_Y);
int diffX;
int diffY;
CGGetLastMouseDelta(&diffX, &diffY);
if (diffX == 0 && diffY == 0) return;
if ((diffX) > 0)
angle += (diffX)/5;
else if ((diffX) < 0)
angle += (diffX)/5;
if ((diffY) > 0 && pitch < 90)
pitch += (diffY)/5;
else if ((diffY) < 0 && pitch > -70)
pitch += (diffY)/5;
CGDisplayMoveCursorToPoint(0, pnt);
的问题是烦人简单:第一次CGGetLastMouseDelta被调用时,它返回鼠标位置之间的差异的程序启动和窗口的中心之前。这意味着当程序开始时,摄像机应该是正确的,但只要我触摸鼠标,它就会跳到不同的位置。
我有另一个呼叫到中心光标函数初始化里面的一切,如下图所示:
CGPoint pnt;
pnt.x = glutGet(GLUT_WINDOW_WIDTH)/2 + glutGet(GLUT_WINDOW_X);
pnt.y = glutGet(GLUT_WINDOW_HEIGHT)/2 + glutGet(GLUT_WINDOW_Y);
CGDisplayMoveCursorToPoint(0, pnt);
我知道很少的碳,并一直在寻找像疯了一样找到答案,但无济于事。还有什么我应该做的,以避免这种跳跃?
我试过把'CGAssociateMouseAndMouseCursorPosition(false)'放在我的初始化方法开始处,它似乎没有改变任何东西。我对CoreGraphics知之甚少,似乎并没有太多有关我正在寻找的文档。 – 2011-05-09 01:45:59
没关系,我没有摆脱'CGDisplayMoveCursorToPoint',这现在完美的作品,非常感谢:) – 2011-05-09 01:54:41