2015-11-22 522 views
0

我有一個1000x1000像素的屏幕尺寸,我試圖獲得opengl座標。我明白了OpenGL的座標系如下:將Glut鼠標座標轉換爲opengl

(-1,1)  |  (1,1) 
      | 
--------(0,0)------- 
      | 
      | 
(-1,-1) | (1,-1) 

void mouse(int btn, int state, int x, int y){ 
    float mx = x ; 
    float my = y ; 
    ox = (mx/1000 -0.5); 
    oy = -(my/1000 -0.5); 
    switch(btn){ 
     case GLUT_LEFT_BUTTON: 
      if(state==GLUT_DOWN){ 
       printf("%f\n",mx); 
       printf("%f\n",my); 
       //p1->setPoint(x, y, 1.0); 
      } 
      break; 
    } 

}; 

我的窗口分辨率1000×1000作爲。目前的行爲跟蹤鼠標,但不完全。它靠近鼠標,在接近0,0時更精確。我認爲我必須將-0.5更改爲-1,但最終會翻轉所有內容。

+0

加入1-完全抵消和倒過來我 –

+0

除以500而不是1000 –

+0

謝謝我剛把它和2相乘。 –

回答

3
void mouse(int btn, int state, int x, int y){ 
    float mx = x ; 
    float my = y ; 
    ox = (mx/500-1.0); 
    oy = -(my/500 -1.0); 
    switch(btn){ 
     case GLUT_LEFT_BUTTON: 
      if(state==GLUT_DOWN){ 
       printf("%f\n",mx); 
       printf("%f\n",my); 
      } 
      break; 
    } 

}; 

牛=(glutx /(屏幕x的一半) - 1

OY = - ((gluty /(半屏幕Y的) - 1)

+1

這段代碼將給出值注ween -0.5和1.5。你需要減去1.0,而不是0.5。 –

+0

感謝您在說明中更改了它,但忘記更改代碼 –

相關問題