qt+opengl(一)

编程入门 行业动态 更新时间:2024-10-17 05:27:12

<a href=https://www.elefans.com/category/jswz/34/1769097.html style=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(一)

本文发布于:2023-11-16 10:29:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1617632.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:qt   opengl

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!