OpenGL - рисование многоугольника по клику мыши, многоугольник всегда справа - PullRequest
0 голосов
/ 19 января 2012

Для одного из моих классов я создаю простую программу рисования с 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, но я чувствую, что это не имеет отношения к этой проблеме.

1 Ответ

0 голосов
/ 13 марта 2013

Вам нужно нормализовать ваши X и Y координаты мыши в вашем орто ... для этого вы можете сделать это х1 = х / вес вашего экрана y1 = y / высота вашего экрана x1 и y1 новые переменные и x, y - аргументы мыши ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...