QOpenGLWidget makeCurrent()不起作用

时间:2015-02-08 18:55:50

标签: c++ qt opengl

我有一个QOpenGLWidget的子类,如下所示:

class MyWidget : public QOpenGLWidget
{ 
    ...
    virtual void initializeGL();
    virtual void resizeGL( int width, int height );
    virtual void paintGL();

    void SetWireframe( bool value );
};

选中复选框后,主窗口将调用SetWireframe函数。

根据我的理解,我需要在我的GL函数调用之前使上下文保持最新状态,如果它们不在initializeGL,resizeGL和paintGL之内。

void MyWidget::SetWireframe( bool value )
{
    makeCurrent();

    if( value )
        glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
    else
        glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );

    doneCurrent();
}

如果没有makeCurrent(),glPolygonMode似乎在主窗口上而不在我的小部件上,但没有这个调用就什么也没做。如何使它工作?

(如果重要的话,我使用GLEW而不是QGLFunctions)

编辑:当存储值变量并在paintGL()中设置线框状态时,它正在工作,但我想让它正常工作(使用SetWireframe)。

0 个答案:

没有答案