glClearColor()不会改变背景颜色

时间:2017-07-07 09:46:13

标签: c++ qt opengl-es

我尝试使用Qt的OpenGL小部件渲染一些OpenGL内容。在没有显示任何内容之后遇到问题,我只是尝试将窗口的背景颜色更改为黑色以外的其他颜色。但即使这样也没有发生。

这与Qt有关,还是我弄乱了OpenGL的东西?

以下是我写的一些代码:

class GLWidget2 : public QOpenGLWidget, protected QOpenGLExtraFunctions
{
public:
    GLWidget2(QWidget* parent = 0);

    void paintGL();
    void resizeGL(int width, int height);
    void initializeGL();
};
GLWidget2::GLWidget2(QWidget* parent) :
    QOpenGLWidget(parent)
{
    QSurfaceFormat format;

    //doesn't set the background color
   format.setVersion(3, 0);

   //sets the background color
   //format.setVersion(2, 0);

    setFormat(format);
}

void GLWidget2::initializeGL()
{
    initializeOpenGLFunctions();

    qDebug() << (char*)glGetString(GL_VERSION) << "\n";
}

void GLWidget2::paintGL()
{
    glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}

void GLWidget2::resizeGL(int width, int heigth)
{
    update();
}

由于某些驱动程序问题,我正在 OpenGL 3.0 ES 平台上运行。

编辑:

如果我改变OpenGL版本QOpenGLWidget用于OpenGL 2.0 ES,一切正常。但我真的不想使用OpenGL 2.0。 我无法弄清楚应该在3.0中导致这个问题

EDIT2:

将代码更改为更小的示例

0 个答案:

没有答案