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