Так что у меня эта программа должна использовать QGLWidget, я все еще относительно новичок в использовании OpenGL и QT, поэтому я начал следовать этому учебнику . Однако фон моего QGLWidget не изменится, что бы я ни делал (я использую Ubuntu, а не windows). Нужно ли создавать класс для него внутри mainWindow. cpp или этого достаточно для того, чтобы он работал?
Это то, что отображается при запуске программы. Виджет QGLWid справа полностью черный, если он отображается желтым цветом с красным треугольником
Вот продвинутый виджет QGLWidget, который связан с классом drawingArea
Наконец, вот код из области рисования. Он прекрасно компилируется, и я не вижу ничего плохого в логике c, отсюда мое замешательство.
drawingarea.h
#ifndef DRAWINGAREA_H
#define DRAWINGAREA_H
#include <QGLWidget>
#include <QOpenGLWindow>
#include <QSurfaceFormat>
#include <QOpenGLFunctions>
#include <QtOpenGL>
#include <GL/glu.h>
class drawingArea : public QGLWidget
{
public:
drawingArea(QWidget *parent=0);
virtual void initializeGL();
virtual void resizeGL(int w, int h);
virtual void paintGL();
void paintEvent(QPaintEvent *event);
private:
QOpenGLContext *context;
QOpenGLFunctions *openGLFunctions;
};
#endif // DRAWINGAREA_H
drawingarea. cpp
#include "drawingarea.h"
drawingArea::drawingArea(QWidget *parent) : QGLWidget(parent)
{
}
void drawingArea::initializeGL()
{
glClearColor(1,1,0,1);
}
void drawingArea::resizeGL(int w, int h)
{
}
void drawingArea::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,0,0);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0);
glVertex3f(0.5,-0.5,0);
glVertex3f(0,0.5,0);
glEnd();
}
void drawingArea::paintEvent(QPaintEvent *event)
{
}