Wpis z mikrobloga

Próbuję napisać prostą aplikację w Qt i Opengl, która wyświetla prostokąt w miejscu mojego kliknięcia myszą- niby działa, ale nie za bardzo wiem jak przeliczyć współrzędne kliknięcia w Qt na OpenGlowskie- Kiedy klikam w lewy górny róg, kwadrat pokazuje się na środku, a kiedy w prawy dolny kwadrat pokazuje się tam gdzie powinien być. Domyślam się, że po prostu mam pkt 0 openGla na środku ekranu, ale zwykłe przesuwanie nic tu nie daje.

void screen::mousePressEvent(QMouseEvent *click)

{

    int viewport[4];

    glGetIntegerv(GL_VIEWPORT, viewport);

double ClickGlX =  ((double)click->pos().x() ) / viewport[2];

    double ClickGlY = -1 * ((double)click->pos().y() ) / viewport[3];

    AHandleX = ClickGlX;

    AHandleY = ClickGlY;

    updateGL();

}

Wyświetlam takim kodem:

void screen::paintGL()

{

glClear(GLCOLORBUFFERBIT | GLDEPTHBUFFERBIT);

glLoadIdentity();

glScaled(0.5,0.5,0.5);

glTranslated(0,0,-14);

glPushMatrix();

glTranslated(AHandleX,AHandleY,0);

glColor3d(1,0,0);

glBegin(GL_QUADS);

glVertex3d(-0.1,0.1,0);

glVertex3d(0.1,0.1,0);

glVertex3d(0.1,-0.1,0);

glVertex3d(-0.1,-0.1,0);

glEnd();

glPopMatrix();

}

#cpp #qt #opengl

#programowanie
  • 7