2012-01-19 4 views
0

私のクラスの1つは、OpenGLを使った簡単なペイントプログラムを作成することです。最初のステップの1つは、マウスのクリックをポリゴンに窓。OpenGL - マウスクリックでポリゴンを描く、ポリゴンは常に右にある

//function called when mouse is clicked 
void mouseClick(int button, int state, int x, int y){ 

    float ptr1[3] = { x-size, y-size, 0 }; 
    float ptr2[3] = { x-size, y+size, 0 }; 
    float ptr3[3] = { x+size, y+size, 0 }; 
    float ptr4[3] = { x+size, y-size, 0 }; 

    if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN){//if the left mouse button  is  clicked 
    glColor3f (1.0, 1.0, 1.0); //set color to white (remove later) 
    glOrtho (0.0, 1.0, 0.0, 1.0, -1.0, 1.0); //sets the window coordinates? 
    glBegin (GL_POLYGON); //start drawing a polygon 
      glVertex3fv (ptr1); 
    glVertex3fv (ptr2); 
    glVertex3fv (ptr3); 
    glVertex3fv (ptr4); 
glEnd(); 
    glFlush(); //flushes all commands to ensure polygon is drawn 
    } 
    //glutPostRedisplay(); 
} 

誰もが任意の明白なことを見ることができます...私はそれを描くことを得るが、多角形はいつも私が

私のマウスクリックコードがクリック位置の右のウィンドウ間で約三分の終わります不具合?サイズは浮動小数点数= 32ですが、この問題とは無関係です。あなたのオルトにして、マウスのあなたのXとY座標を正規化する必要があります...あなたのためには、この画面の X1 = X /重量 Y1 =画面のY /高さ X1とY1を行うことができます

+1

x座標とy座標は何ですか?あなたのglOrtho()コールは描画エリアを両方向で0から1まで定義するように設定しています。あなたのx座標とy座標は、-0.5と0.5の間に戻っていますか? – user1118321

+0

ありがとうございます。イムをクリックするだけ。しかし私の窓は800×600なので、それに合わせてオルソを変えるつもりです。 OpenGLは私にとって新しいものです。だから私は正確にオルトが何をしたのか知りませんでした – cpb

+0

あなたが物事が描かれているのを見ているなら、あなたのxとyは明らかに正しいものに近いです。私はあなたが渡している座標についての詳細な情報を持たずにglOrtho()を変更するだけではありません。あなたはxとyの値を印刷して、変更を加える前に何を参照するかで始めることができます。彼らがなぜ彼らが最初のものなのか理解できるかどうかを見てください。 – user1118321

答えて

0

新しい変数とx、yはマウスの引数です...

関連する問題