`
yuanyu5237
  • 浏览: 159325 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LINUX下QT+OpenGL编程初步

    博客分类:
  • QT
阅读更多

我用的是ubuntu10.10;安装了qtcreator全套4.7.0;然后随便建一个工程,再pro文件中加入:

 

QT      += opengl

在类的头文件中加入:

 

#include <QtOpenGL>
 

如果编译出现,找不到gl.h文件的错误,则是缺少了一些库;需要安装,执行下面的命令:

sudo apt-get install mesa-common-dev

sudo apt-get install freeglut3

sudo apt-get install freeglut3-dev

sudo apt-get install glutg3

sudo apt-get install glutg3-dev

sudo apt-get install libglut3

sudo apt-get install libglut3-dev

然后,写第一个基于QT的opengl程序:

 

#ifndef NEHEWIDGET_H
#define NEHEWIDGET_H

#include <QtOpenGL>

class NeHeWidget : public QGLWidget
{
        Q_OBJECT

public:
        NeHeWidget( QWidget* parent = 0 );
        ~NeHeWidget();

protected:
        void initializeGL();
        void paintGL();
        void resizeGL( int width, int height );

        void keyPressEvent( QKeyEvent *e );

private:
        int base;
};

#endif//NEHEWIDGET_H

 

 

#include "nehewidget.h"

NeHeWidget::NeHeWidget( QWidget* parent )
    : QGLWidget( parent )
{
    setGeometry( 150, 100, 1024, 576 );
}

NeHeWidget::~NeHeWidget()
{
}

void NeHeWidget::initializeGL()
{
    glShadeModel( GL_SMOOTH ); // Enables Smooth Shading
    glClearColor( 0.0, 0.0, 0.0, 0.0 ); // Black Background
    glClearDepth( 1.0 ); // Depth Buffer Setup
    glEnable( GL_DEPTH_TEST ); // Enables Depth Testing
    glDepthFunc( GL_LEQUAL ); // The Type Of Depth Test To Do
    glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ); // Really Nice Perspective Calculations
}

void NeHeWidget::paintGL()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    glLoadIdentity();
    glTranslatef( -1.5,  0.0, -6.0 );
    glBegin( GL_TRIANGLES );
    glColor3f( 1.0, 0.0, 0.0 );
    glVertex3f(  0.0,  1.0,  0.0 );
    glColor3f( 0.0, 1.0, 0.0 );
    glVertex3f( -1.0, -1.0,  0.0 );
    glColor3f( 0.0, 0.0, 1.0 );
    glVertex3f(  1.0, -1.0,  0.0 );
    glEnd();

    glTranslatef(  3.0,  0.0,  0.0 );
    glColor3f( 0.5, 0.5, 1.0 );
    glBegin( GL_QUADS );
    glVertex3f( -1.0,  1.0,  0.0 );
    glVertex3f(  1.0,  1.0,  0.0 );
    glVertex3f(  1.0, -1.0,  0.0 );
    glVertex3f( -1.0, -1.0,  0.0 );
    glEnd();
}

void NeHeWidget::resizeGL( int width, int height )
{
    if ( height == 0 )
    {
        height = 1;
    }

    glViewport( 0, 0, width, height ); // (GLint)
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    gluPerspective( 45.0, (float)width/(float)height, 0.1, 100.0 ); // GLfloat
    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();
}

void NeHeWidget::keyPressEvent( QKeyEvent *e )
{
    switch ( e->key() )
    {
        case Qt::Key_F2: //F2 key, full screen switch
            break;
        case Qt::Key_Escape: // Esc key, close window
            {
                close();
                break;
            }
        default:
            break;
    }
}

 这个主要是记录一下,没什么可用价值

分享到:
评论
5 楼 gistop 2011-11-15  
可以用glFrustum
4 楼 gistop 2011-11-15  
多谢博主的指点,安装好了。
两个小问题:
1  QT      += openg  应该为 QT      += opengl
2  gluPerspective好像opengl最新的版本不支持了(老版本OpenGL 2.1支持),编译时会提示‘gluPerspective’ was not declared in this scope这样的错误。

3 楼 gistop 2011-11-14  
多谢博主如此神速的指导,我去试试。
2 楼 yuanyu5237 2011-11-14  
gistop 写道
很明了。我的环境和楼主基本一样。

命令行:
sudo apt-get install glut3
提示:
Reading package lists... Done
Building dependency tree  
Reading state information... Done
E: Unable to locate package glut3


我换了源,还是这样的提示。这个问题怎么解决呢?多谢指点。


非常不好意思,我刚刚在虚拟机里试了下,也找不到,我猜应该是我当时写错了,时间长了不记得了,应该是

sudo apt-get install glutg3
sudo apt-get install glutg3-dev

希望对你有帮助,另外,像这种问题,如果命令不好解决,去新德里软件包里面找
1 楼 gistop 2011-11-14  
很明了。我的环境和楼主基本一样。

命令行:
sudo apt-get install glut3
提示:
Reading package lists... Done
Building dependency tree  
Reading state information... Done
E: Unable to locate package glut3


我换了源,还是这样的提示。这个问题怎么解决呢?多谢指点。

相关推荐

    Linux+Qt+OpenGL二维和三维的例子

    完整的QT工程案例,详细介绍了GT环境下OpenGL的编程例子,说明了三维图形的设计和展示过程。

    Opengl.zip_QT OpenGL_opengl_opengl qt linux

    OpenGL基于QT环境下的编程代码。测试通过。

    NeHe的OpenGL编程(Qt版)

    此资源是我根据网络上的资源搜集并且整理而来。出于对原作者的尊重,资源免费。...----------------------------------------------- 经测试,在Ubuntu下(Qt...在bin下有Linux和Windows的可执行程序。可以放心地运行。

    LINUX下KDE 2的Qt编程宝典

    LINUX下KDE 2的Qt编程宝典 以流行的Qt库为对象,从程序设计角度全面介绍Linux/UNIX下基于Qt的图形界面程序开发方法 介绍怎样编写KDE应用程序、使用OpenGL类绘图和创建Netscape插件等

    精通qt4编程(源代码)

    \第1章 Qt初步实践 2 \1.1 第一个Qt程序 2 \1.1.1 建立主程序 2 \1.1.2 建立工程 3 \1.1.3 编译/运行第一个Qt应用程序 8 \1.1.4 第一个Qt程序的代码分析 8 \1.2 使用Qt布局管理器 11 \1.3 关联操作 12 \1.4 小结 13 ...

    精通Qt4编程(第二版)源代码

    \第1章 Qt初步实践 2 \1.1 第一个Qt程序 2 \1.1.1 建立主程序 2 \1.1.2 建立工程 3 \1.1.3 编译/运行第一个Qt应用程序 8 \1.1.4 第一个Qt程序的代码分析 8 \1.2 使用Qt布局管理器 11 \1.3 关联操作 12 \1.4 ...

    24小时学通qt编程

    第四部分——Qt编程技巧,介绍怎样编写KDE应用程序、使用OpenGL类绘图和创建Netscape插件等。第五部分——改善程序性能,介绍Qt程序的国际化、移植、调试等问题,以及怎样使用构造程序简单快捷地创建图形界面。附录...

    GNU_Linux编程指南.pdf

    还分别讲解了真正图形化的流行系统X Window、Qt、GNOME以及OpenGL的基本编程方法;最后,介绍了Bash编程和设备驱动编程。 本书包含大量实用实例,读者可以通过实例代码深入理解编程思想和技巧。本书的另一优点是...

    24小时学通qt编程(PDF)

    以流行的Qt库为对象,从程序设计角度全面介绍Linux/UNIX下基于Qt的图形界面程序开发方法。全书共分5部分:第一部分&mdash;&mdash;Qt基础知识,介绍Qt基本知识、面向对象程序设计、槽和信号、Qt构造块等内容。第二...

    GNU/Linux编程指南(第二版)中文版含光盘

    电子书是中文扫描版,...第29章 使用OpenGL和Mesa进行3D图形编程 第6部分 特殊编程技术 第30章 使用GNU Bash进行Shell编程 第31章 设备驱动程序 第7部分 补充内容 第32章 软件包管理第33章 建档 第34章 许可证的发放

    GNU_linux编程指南

    还分别讲解了真正图形化的流行系统X Window、Qt、GNOME以及OpenGL的基本编程方法;最后,介绍了Bash编程和设备驱动编程。 本书包含大量实用实例,读者可以通过实例代码深入理解编程思想和技巧。本书另一优点是讲述了...

    GNU_Linux编程指南

    还分别讲解了真正图形化的流行系统X Windows、Qt、GNOME以及OpenGL的基本编程方法;最后,介绍了Bash编程和设备驱动编程。  本书包含大量实用实例,读者可以通过实例代码深入理解编程思想和技巧。本书另一优点是...

    opengl.zip_Linux/Unix编程_QT_

    QT关于opengl的操作,对基本图形图像进行处理,可直接运行

    从零开始学习音视频编程技术(41) H.264播放器.zip

    ffmpeg4.1解码h264和h265,并使用Qt的OpenGL显示播放的例子 这是Qt的工程,建议使用Qt Creator 打开 Qt5.6.2(vs2013/mingw) + ffmpeg4.1 1.程序可以在windows/linux下直接编译使用。 2.windows下的库为...

    毕设:仿QQ界面的聊天系统,客户端使用qt进行界面设计,服务端为linux,利用sockets编程.zip

    Qt支持 Windows、Linux/Unix、Mac OS X、Android、BlackBerry、QNX等多种平台,并为这些不同的平台提供了统一的开发环境。 面向对象 C++是完全面向对象的,这一点和Objective-c等在开发很相似。而Qt又是基于C++一...

    QT控件快速显示连续图像

    QT控件中显示图像方法有三种,使用QLabel,QWidget,QOpenGLWidget。 实现了QOpenGLWidget方法,使用显卡,绘制效率很高。

    学习QT技术基础资料

    Qt是一个多平台的C++图形用户界面应用程序框架,Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。 面向对象 Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。...

    C++ GUI Programming with Qt4中文版.pdf

    在源代码不经任何修改的情况下,这些程序即可流畅运行于Windows、Linu/UNIX、Mac OS X和嵌入式Linux上“一次编写,随处编译”。 本书对Qt进行了全面介绍,充分展示了Qt程序开发模式中的每一个细节。奇趣科技公司...

    qt glut模块资源

    Qt本身不包括glut工具库。OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用。如果需要在程序里直接使用OpenGL,会有很多非常恶心的预备工作要做,而且可能还要专门为平台的差异...

Global site tag (gtag.js) - Google Analytics