设为首页 收藏本站
查看: 819|回复: 0

[经验分享] ubuntu+QT+ OpenGL绘图

[复制链接]

尚未签到

发表于 2018-4-30 10:57:49 | 显示全部楼层 |阅读模式
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>  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.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,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(20, 100,"Hello Jcy, My first OpenGL app.");
  }
  //该程序是设置opengl场景透视图,程序中至少被执行一次(程序启动时).

  void GLWidget::resizeGL(int>  {

  if(0 ==>
  >  glViewport(0, 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, 640, 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>  如果你是这个错误,那么请你在.h文件中添加      #include<QtOpenGL>
  3.3错误:C2039: 'show' : is not a member of 'GLWidget'
  如果你是这个错误,那么请你在.h文件中添加       #include<QtOpenGL>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-453954-1-1.html 上篇帖子: windows远程ubuntu花屏 下篇帖子: Ubuntu下的sysv
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表