Итак, моя цель - (сначала) нарисовать треугольник с openGL.qt openGL - draw triangle
мои вопросы:
1) Как/когда у обоих моих функций дозвонились? Я вижу, что вызван только один. т. е. void MyGLWidget :: paintGL. Я запутался, потому что, как вы можете видеть, я никогда не вызываю эту функцию, она автоматически вызывается. Я добавил виджет на свой ui, который я продвинул в MyGLWidget. Но когда/почему/как это называется (не)?
мой код: myglwidget.cpp
#include "myglwidget.h"
#include <QtWidgets>
#include <QtOpenGL>
#include <GL/glu.h>
MyGLWidget::MyGLWidget(QWidget *parent)
: QGLWidget(QGLFormat(QGL::SampleBuffers), parent)
{
}
void MyGLWidget::initializeGL()
{
glClearColor(1,1,0,1);
qDebug("init"); //<-------never gets printed
}
void MyGLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);
qDebug("painting"); //<---- does get printed
glColor3f(1,0,0);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0);
glVertex3f(0.5,-0.5,0);
glVertex3f(0.0,0.5,0);
glEnd();
}
myglwidget.h
#ifndef MYGLWIDGET_H
#define MYGLWIDGET_H
#include <QGLWidget>
class MyGLWidget : public QGLWidget
{
Q_OBJECT
public:
explicit MyGLWidget(QWidget *parent = 0);
void initializeGL();
void paintGL();
void resizeGL(int width, int height);
private:
};
#endif // MYGLWIDGET_H
main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.setWindowTitle("OpenGL with Qt DAO");
w.show();
return a.exec();
}
да действительно! Я не делаю никакого экземпляра или чего-то еще, но эти функции вызываются! –
Но разве вы не сказали, что продвинули виджет в «MyGLWidget»? Как ты это сделал? С дизайнером? – Dirk
Да, я сделал это с дизайнером. Я должен признать, что я действительно не знаю, что это способствует ... –