2014-06-01 3 views
0

Я решил использовать OpenGL для моего проекта в Qt, и я застрял. Я хочу добавить прямоугольник в том месте, где я нажимаю. Вот код, я использую:Добавить прямоугольник по щелчку

void GLWidget::initializeGL() 
{ 
    glClearColor(0.2,0.2,0.2,1); 
    glDisable(GL_DEPTH_TEST); 
    glViewport(0,0,w1,h1); 
} 

void GLWidget::paintGL() 
{ 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(-10.0, 10.0, -10.0, 10.0, -1, 1); 

    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    glClear(GL_COLOR_BUFFER_BIT); 
} 

void GLWidget::mousePressEvent(QMouseEvent *e) 
{ 
    float x,y; 
    x = -10+((e->x()+1)/w1*20); 
    y = 10-((e->x()+1)/h1*20); 
    qDebug()<<"Position x ="<<x; 
    qDebug()<<"Position y ="<<y; 
    glColor3f(1,0,0); 
    glRectf(x,y,x+1,y+1); 
} 

void GLWidget::mouseReleaseEvent(QMouseEvent *) 
{ 
    updateGL(); 
} 

Я читал, что я должен изменить glOrtho и glViewport изменить экран координат OpenGL координаты, и я пытался сделать это, но он не работает. ;/ В моем проекте w1 и h1 являются static const ints, мое окно имеет фиксированный размер.

ответ

0

Используйте paintEvent вместо paintGL и нарисуйте прямоугольник над вашим 3D, но с QPainter. Посмотрите пример Overpainting.

Смежные вопросы