我尝试使用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:
将代码更改为更小的示例