位置: 编程技术 - 正文
推荐整理分享ubuntu+QT+ OpenGL绘图(ubuntu运行qt程序),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:ubuntu打开qt,ubuntu20 qt,ubuntu qt opencv,ubuntu运行qt程序,ubuntu qtcreator,ubuntu qt5,ubuntu qt5.12,ubuntu20 qt,内容如对您有帮助,希望把文章链接给更多的朋友!
ubuntuQTOpenGL绘图
我的开发环境是ubuntuqt,为了要结合opencvopenni,并显示三维点云,所以在2大open环境下又考虑装一个OpenGL。具体安装方法如下:
1、 ctrlalt打开终端,输入 sudo apt-getinstall libqglviewer-dev,进行openGL安装。
2、 打开QT,进行测试。
2.1 新建项目
openGL一般是新建Qt Gui应用项目,在类信息中继承的是Qwidght基类。这样就会生成1个头文件,2个源文件,1个界面文件。
2.2 例程
--------------------------.h-----------------------------------------------
#ifndef GLWIDGET_H
#define GLWIDGET_H
#include <QtOpenGL>
#include <QWidget>
namespace Ui {
class GLWidget;
}
class GLWidget : public QGLWidget
{
Q_OBJECT
public:
explicitGLWidget(QGLWidget *parent = 0);
~GLWidget();
protected:
void initializeGL(); //初始化OpenGL窗口部件
void paintGL(); //绘制整个OpenGL窗口,只要有更新发生,这个函数就会被调用
void resizeGL(int width,int height); //处理窗口大小变化事件的,参数是新状态下的宽和高
voidkeyPressEvent(QKeyEvent *e); //鼠标处理函数
protected:
bool fullscreen; //判断是否全屏的变量
private:
Ui::GLWidget *ui;
};
#endif // GLWIDGET_H
--------------------------.h----------------------------------------
-------------------------.cpp--------------------------------------
#include "glwidget.h"
#include "ui_glwidget.h"
#include <QtGui>
#include <QtCore>
#include <QtOpenGL>
GLWidget::GLWidget(QGLWidget *parent) :
QGLWidget(parent),
ui(new Ui::GLWidget)
{
ui->setupUi(this);
fullscreen = false;
}
//这是对虚函数,这里是重写该函数
void GLWidget::initializeGL()
{
setGeometry(, , ,);//设置窗口初始位置和大小
glShadeModel(GL_FLAT);//设置阴影平滑模式
glClearColor(0.0, 0.0,0.0, 0);//改变窗口的背景颜色
glClearDepth(1.0);//设置深度缓存
glEnable(GL_DEPTH_TEST);//允许深度测试
glDepthFunc(GL_LEQUAL);//设置深度测试类型
glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);//进行透视校正
}
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
//renderText(,,"Hello,My Dear");
// glColor3f(1.0, 0.0,0.0);
/*
glBegin(GL_TRIANGLES);
glVertex3f(0.0, 1.0,0.0);
glVertex3f(-1.0, -1.0,0.0);
glVertex3f(1.0, -1.0,0.0);
glEnd();
*/
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 0.0f,0.0f);
glVertex3f(0.0f,1.0f, 0.0f);
glColor3f(0.0f, 1.0f,0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glColor3f(0.0f, 0.0f,1.0f);
glVertex3f(1.0f,-1.0f, 0.0f);
glEnd();
renderText(, ,"Hello Jcy, My first OpenGL app.");
}
//该程序是设置opengl场景透视图,程序中至少被执行一次(程序启动时).
void GLWidget::resizeGL(int width, int height)
{
if(0 == height)
height = 1;//防止一条边为0
glViewport(0, 0,(GLint)width, (GLint)height);//重置当前视口,本身不是重置窗口的,只不过是这里被Qt给封装好了
glMatrixMode(GL_PROJECTION);//选择投影矩阵
glLoadIdentity();//重置选择好的投影矩阵
// gluPerspective(.0,(GLfloat)width/(GLfloat)height, 0.1, .0);//建立透视投影矩阵
// glMatirxMode(GL_MODELVIEW);//以下2句和上面出现的解释一样
glLoadIdentity();
}
void GLWidget::keyPressEvent(QKeyEvent *e)
{
switch(e->key())
{
//F1键为全屏和普通屏显示切换键
case Qt::Key_F1:
fullscreen =!fullscreen;
if(fullscreen)
showFullScreen();
else
{
setGeometry(, , , );
showNormal();
}
updateGL();
break;
//Ese为退出程序键
case Qt::Key_Escape:
close();
}
}
GLWidget::~GLWidget()
{
delete ui;
}
-------------------------.cpp--------------------------------------
Main.cpp文件没任何改动。
输出是一个三角形。
3、可能出现的错误:
3.1错误:C: Cannot open include file: 'QtOpenGL': No such file ordirectory
如果你是这个错误,那么你需要在.pro文件中添加QT = opengl
3.2错误:C: 'QGLWidget' : base class undefined
如果你是这个错误,那么请你在.h文件中添加 #include<QtOpenGL>
3.3错误:C: 'show' : is not a member of 'GLWidget'
如果你是这个错误,那么请你在.h文件中添加 #include<QtOpenGL>
第二节:导演类Director介绍 导演设计模式:导演类使用了一种设计模式,即导演设计模式,这样的模式,可以降低程序的耦合性。由导演来统一高度各个场景,而不是由场景去调
3DS 文件格式 3DS文件式1、读取规则3ds文件的读取规则如下:字节:直接读取;字:先读低位字节,后读高位字节,如ed3c读出后的字为3ced;双字:先读低位字,后读
Cocos2dx 3.2 + vs + win7 改变面黑色背景的大小 打开AppDeleGate.cpp找到函数applicationDidFinishLaunching,先是通过director=Director::getInstance();获得一个导演实例,然后通过autoglview=director-getOpenGLView();获得一个Ope
标签: ubuntu运行qt程序
本文链接地址:https://www.jiuchutong.com/biancheng/369463.html 转载请保留说明!友情链接: 武汉网站建设