Qt+OpenGL可视化入门基础篇(一)

首先,经过将QWidget进行提升,我们将新建的glarea类继承了QWidget的功能,具体实施过程详见https://blog.csdn.net/weixin_42229275/article/details/89046188
在编译通过后,我们可以接着进行OpenGL可视化框架的学习与搭建。
第一步,要将OpenGL提供的库文件添加到根目录下
在这里插入图片描述
如图四个文件夹

第二步,在Pro文件中加入路径:

SOURCES += .\wrap\ply\plylib.cpp
SOURCES += .\wrap\gui\trackball.cpp
SOURCES += .\wrap\gui\trackmode.cpp

DEFINES += GLEW_STATIC
INCLUDEPATH += .\code\lib\glew\include
INCLUDEPATH += \wrap\gl
SOURCES += .\code\lib\glew\src\glew.c

LIBS += -lopengl32 -lGLU32

win32{
DEFINES += NOMINMAX
}
在这里插入图片描述
第三步,分别在头文件和cpp文件中添加头文件
头文件下:
/// Opengl related imports
#include <GL/glew.h>
#include

/// vcg imports
#include <vcg/complex/complex.h>
#include <vcg/complex/algorithms/update/bounding.h>
#include <vcg/complex/algorithms/update/normal.h>
#include <vcg/complex/algorithms/update/selection.h>
#include <vcg/complex/algorithms/update/topology.h>
#include <vcg/complex/algorithms/create/platonic.h>

/// wrapper imports
#include <wrap/io_trimesh/import.h>
#include <wrap/gl/trimesh.h>
#include <wrap/gui/trackball.h>

#include <wrap/gl/pick.h>

cpp文件下:
#include
#include
#include
#include <wrap/qt/trackball.h>

#include <math.h>
#include

#include
#include
#include <QtCore/QIODevice>

#include <QtCore/QTextStream>
#include <QtCore/QFile>

#include “fstream”
#include “iostream”
注意:这些头文件中有一些鼠标事件和键盘事件等等的头文件,可以酌情添加

好,现在前期工作都做好了,我们开始搞事情~
首先我们要重载paintGL函数:
在头文件里声明一下,最好声明为protected,至于public、protected和private有什么区别,是作用域的区别,具体详细的请问度娘
下一步,我们要定义(重载)paintGL()函数:

*void glarea::paintGL ()
{
glClearColor(0.0,0.0,0.0,0.0);
glEnable(GL_LIGHTING);
GLfloat ambLight[] = {1.0f,1.0f,1.0f,1.0f};
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambLight);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);
glEnable(GL_COLOR_MATERIAL);
//glEnable(GL_CULL_FACE); //单面渲染
glEnable(GL_DEPTH_TEST); //深度测试
glDepthMask(GL_TRUE);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(25, glarea::width()/(float)glarea::height(), 0.1, 100); //透视投影–平截头体(上下视角,宽高比,近裁面距,远裁面距)
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0,0,5, 0,0,0, 0,1,0);
//以上部分都可以暂时不用细致研究,我们会在下一部分细说,主要看下部分:
glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
//给你要可视化的点搞上颜色,这四个参数分别是RGB和透明度
glPointSize(10);//设置你要显示点的大小
glBegin(GL_POINTS);//设置具体是显示的是什么
glVertex3f(-0.01,0.01,0);显示点
glVertex3f(0.02,0.02,0);
glVertex3f(0.01,0,0);
glEnd();//结束显示
}
然后在构造函数中我们要调用函数updateGL();
好,接下来我们可以编译一下搞一下看看
运行结果:
在这里插入图片描述
OK,我们显示出了我们想要的点

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值