Изучаю сейчас OpenGL и в один прекрасный момент сменил один из компов на свежий на интел со встройкой. Во время переноса проекта на Qt на новую машину заметил проблему с отрисовкой окна при старте приложения.
В compatibility profile все работает на ура, но стоит включить core profile и при старте приложение окно не обновляется до того момента, как я добавлю туда любой объект (захватывается кусок экрана, где возникло окно).
Кто нибудь встречался с подобным? Если да, то как лечили?
Вот код с которым у меня воспроизводиться баг (код брался для примера. На рабочем коде для core тоже самое):
class GLWidget : public QGLWidget, protected QOpenGLFunctions
{
Q_OBJECT
public:
explicit GLWidget(QWidget *parent = 0);
void initializeGL();
void resizeGL(int w, int h);
void paintGL();
signals:
public slots:
};
GLWidget::GLWidget(QWidget *parent) :
QGLWidget(parent)
{
}
void GLWidget::initializeGL() {
QGLFormat format;
format.setVersion(4,3);
format.setProfile(QGLFormat::CompatibilityProfile);
this->setFormat(format);
/*glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glShadeModel(GL_SMOOTH);*/
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
// Dark blue background
glClearColor(0.0f, 0.0f, 0.4f, 0.0f);
// Enable depth test
glEnable(GL_DEPTH_TEST);
// Accept fragment if it closer to the camera than the former one
glDepthFunc(GL_LESS);
}
const GLfloat triangleVertices[] {
-1.0f, -0.5f, 0.0f,
1.0f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f
};
void GLWidget::resizeGL(int w, int h)
{
if (h == 0) {
h = 1;
}
glViewport( 0, 0, w, qMax( h, 1 ) );
}
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//glColor3f(1.0f, 0.0f, 0.0f);
glColor4f(0.0f,1.0f,0.0f,0.0f);
glEnableClientState(GL_VERTEX_ARRAY);
{
glVertexPointer(3, GL_FLOAT, 0, triangleVertices);
glDrawArrays(GL_TRIANGLE_FAN, 0, 3);
}
glDisableClientState(GL_VERTEX_ARRAY);
}
Выхлоп archey:
OS: Arch Linux x86_64
Kernel Release: 3.13.6-1-ARCH
DE: KDE
RAM: 1555 MB / 3827 MB
Processor Type: Intel(R) Core(TM) i3-4130 CPU @ 3.40GHz
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.1.0
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 10.1.0
OpenGL shading language version string: 1.30
OpenGL context flags: (none)