我决定在Qt中使用OpenGL作为我的项目而且我被卡住了。 我想在我点击的地方添加一个矩形。 这是我使用的代码:
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是静态const int,我的窗口有固定的大小。
答案 0 :(得分:0)
使用paintEvent而不是paintGL,并使用QPainter在3d上绘制一个矩形。看看Overpainting示例。