好吧,这些天我试图在Qt 5.1.1上使用OpenGL库。我在mainwindow.ui中添加了一个Widget,然后将其提升为class,
这是班级的头文件,
include ':project-external-module'
project(':project-external-module').projectDir = file('/project/wrong/path')
这是类'cpp文件
#ifndef GLWIDGET_H
#define GLWIDGET_H
#include <QGLWidget>
#include <core.hpp>
#include <cv.hpp>
#include <GL/glut.h>
class GLWidget : public QGLWidget
{
Q_OBJECT
public:
explicit GLWidget(QWidget *parent = 0);
void initializeGL();
void paintGL();
void resizeGL(int w, int h);
signals:
public slots:
private:
};
#endif // GLWIDGET_H
但#include "glwidget.h"
GLWidget::GLWidget(QWidget *parent) :
QGLWidget(parent)
{
}
void GLWidget::initializeGL()
{
glClearColor((GLclampf)0, (GLclampf)0, \
(GLclampf)1, (GLclampf)1);
}
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0, 0);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5, -0.5, 0);
glVertex3f(0.5, -0.5, 0);
glVertex3f(0.0, -0.5, 0);
glEnd();
}
void GLWidget::resizeGL(int w, int h)
{
}
中的代码似乎不起作用,我只能通过更改paintGL()
中的代码来更改背景颜色;
项目的输出如下,
更新:对不起,我忘记了显示initializeGL()
文件
.pro
答案 0 :(得分:4)
您没有设置任何相机矩阵,因此您不知道虚拟相机的位置以及三角形是否可见。 您可以从正交相机开始:
void GLWidget::resizeGL(int width, int height)
{
// ...
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-2, +2, -2, +2, -1.0, 1.0);
// ...
}
此外,您正在尝试绘制退化三角形(所有y都相同)。试试:
glBegin(GL_TRIANGLES);
glVertex3f(-0.5, -0.5, 0);
glVertex3f(0.5, -0.5, 0);
glVertex3f(0.0, 0.0, 0);
glEnd();