qt+opengl(一)"/>
qt+opengl(一)
QtOpenGL系列
qt opengl 绘制点、线、三角形、多边形(二)
文章目录
- QtOpenGL系列
- 一、环境
- 二、使用步骤
- 1.引入库
- 2. 创建OpenGLWidget
一、环境
Qt5.15 + MingGW 32-Bit
.pro
QT += openglwin32:LIBS += -lOpengl32 -lglu32
unix:LIBS += -lglut -lGLU
二、使用步骤
1.引入库
#include <QOpenGLWidget>
#include <QOpenGLFunctions_4_5_Core>
#include <QGLWidget>
#include <GL/glu.h>
2. 创建OpenGLWidget
class MOpenGLWidget : public QOpenGLWidget, QOpenGLFunctions_4_5_Core
{Q_OBJECT
public:explicit MOpenGLWidget(QWidget *parent = nullptr);protected://重载几个opengl的重要函数//该函数在调用paintGL()和resizeGL()之前被调用一次,负责初始化绘制资源和状态值//该函数绘把上下文激活设置为当前,不需要单独调用makeCurrent()函数virtual void initializeGL();//窗口尺寸发生变化的时候被调用, 对绘制的图像进行调整virtual void resizeGL(int w, int h);//paintGL()类似QWidget的paintEvent()函数,负责对OpenGL图形进行绘制、更新或重绘virtual void paintGL();};
MOpenGLWidget::MOpenGLWidget(QWidget *parent): QOpenGLWidget{parent}
{//设置多采样的值, 抗锯齿QSurfaceFormat fmt = format();fmt.setSamples(18);setFormat(fmt);
}void MOpenGLWidget::initializeGL()
{// 这个函数仅会在构造类对象时调用一次,initializeOpenGLFunctions();//设置画布颜色glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
}void MOpenGLWidget::resizeGL(int w, int h)
{glViewport(0, 0, w, h);
}
void MOpenGLWidget::paintGL()
{glClear(GL_COLOR_BUFFER_BIT);//启动绘制(点)glBegin(GL_POINTS);{// 颜色glColor3f(0.0f, 1.0f, 0.0f);//点的三维坐标glVertex3f(-1.0f, 0.0f, 0.0f);glVertex3f(-0.5f, 0.0f, 0.0f);glVertex3f(0.0f, 0.0f, 0.0f);glVertex3f(0.5f, 0.0f, 0.0f);glVertex3f(1.0f, 0.0f, 0.0f);}//结束绘制glEnd();
}
说明:在opengl中,坐标的数值在[-1, 1],且从上到下(y)、从左到右(z)、从高到低(z)的坐标值是从1到-1的
更多推荐
qt+opengl(一)
发布评论