ubuntu+QT+ OpenGL绘图

前端之家收集整理的这篇文章主要介绍了ubuntu+QT+ OpenGL绘图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

ubuntu+QT+ OpenGL绘图

QTopenGL绘图


ubuntu+QT+OpenGL绘图

我的开发环境是ubuntu+qt,为了要结合opencv+openni,并显示三维点云,所以在2大open环境下又考虑装一个OpenGL。具体安装方法如下:

1、 ctrl+al+t打开终端,输入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(300,200,640,480);//设置窗口初始位置和大小

glShadeModel(GL_FLAT);//设置阴影平滑模式

glClearColor(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(10,20,"Hello,My Dear");

// glColor3f(1.0,0.0);

/*

glBegin(GL_TRIANGLES);

glVertex3f(0.0,1.0,0.0);

glVertex3f(-1.0,-1.0,0.0);

glVertex3f(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,0.0f);

glVertex3f(-1.0f,-1.0f,1.0f);

glVertex3f(1.0f,0.0f);

glEnd();

renderText(20,100,"Hello Jcy,My first OpenGL app.");

}

//该程序是设置opengl场景透视图,程序中至少被执行一次(程序启动时).

void GLWidget::resizeGL(int width,int height)

{

if(0 == height)

height = 1;//防止一条边为0

glViewport(0,(GLint)width,(GLint)height);//重置当前视口,本身不是重置窗口的,只不过是这里被Qt给封装好了

glMatrixMode(GL_PROJECTION);//选择投影矩阵

glLoadIdentity();//重置选择好的投影矩阵

// gluPerspective(45.0,(GLfloat)width/(GLfloat)height,0.1,100.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(300,150,480);

showNormal();

}

updateGL();

break;

//Ese为退出程序键

case Qt::Key_Escape:

close();

}

}

GLWidget::~GLWidget()

{

delete ui;

}

-------------------------.cpp--------------------------------------

Main.cpp文件没任何改动。

输出是一个三角形。

3、可能出现的错误

3.1错误:C1083: Cannot open include file: 'QtOpenGL': No such file ordirectory

如果你是这个错误,那么你需要在.pro文件添加QT += opengl

3.2错误:C2504: 'QGLWidget' : base class undefined

如果你是这个错误,那么请你在.h文件添加#include<QtOpenGL>

3.3错误:C2039: 'show' : is not a member of 'GLWidget'

如果你是这个错误,那么请你在.h文件添加 #include<QtOpenGL>

猜你在找的Ubuntu相关文章