`
yuanyu5237
  • 浏览: 162836 次
  • 性别: 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


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

相关推荐

    qt+OpenGL教程

    【Qt OpenGL 的准备工作】在开始Qt OpenGL编程之前,你需要确保拥有合适的开发环境。Qt有多个版本,其中自由版和企业版支持OpenGL模块,而专业版则不支持。对于Unix/Linux系统,你可以使用Qt 3.1.0自由版或企业版,...

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

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

    qt+OpenGL 实例化qt+OpenGL 实例化

    Qt是一个跨平台的应用程序开发框架,它支持多种操作系统,如Windows、Linux、macOS等。OpenGL则是一个用于渲染2D和3D图形的库,广泛应用于游戏开发、科学可视化、虚拟现实等领域。当我们结合Qt和OpenGL时,可以利用...

    Qt+OpenGL框架代码

    【Qt+OpenGL框架代码】是基于C++编程语言和Visual Studio 2017 IDE实现的一个图形用户界面(GUI)应用程序框架。这个框架利用了Qt库的强大功能以及OpenGL的3D图形渲染能力,旨在帮助开发者快速构建具有高性能3D图形...

    qt+opengl实现的烟花粒子爆炸效果

    在本项目中,"qt+opengl实现的烟花粒子爆炸效果"是一个利用Qt框架和OpenGL图形库...通过学习和分析这个项目,开发者可以深入理解Qt的图形界面编程以及OpenGL的图形渲染原理,同时提升在实时图形应用开发方面的能力。

    3D世界的QT+opengl实现

    在3D图形编程中,Qt提供了QGLWidget或QOpenGLWidget类,用于在应用程序中集成OpenGL渲染。 **OpenGL**: OpenGL是一种用于渲染2D、3D矢量图形的低级跨语言、跨平台的应用程序编程接口(API)。它被广泛用于计算机...

    Qt+OpenGL教程_for_Qt_4.5.3

    【Qt OpenGL 教程】是针对Qt 4.5.3版本的一系列教程,旨在帮助开发者结合Qt框架进行OpenGL编程。教程内容源自NeHe的OpenGL教程,并针对Qt进行了改编,覆盖了从基础到进阶的各种主题,包括: 1. **Qt OpenGL的准备...

    Qt+Opengl 中文教程

    在开始QtOpenGL编程之前,我们需要了解一些基础知识点: 1.Qt版本和平台支持:Qt支持多种操作系统平台,包括Unix/X11、Linux、Windows等。对于OpenGL的支持,各个平台略有不同。在Unix/X11或Linux环境下,自由版或...

    QT+SDL+OPENGL

    2. **创建QT项目**:使用QT Creator创建一个新的QT项目,选择C++作为编程语言。 3. **链接SDL库**:在项目的.pro文件中,添加链接SDL库的配置,如`LIBS += -lSDL2 -lSDL2main`。 4. **编写代码**:在QT的主窗口类...

    vs2005+QT+OPENGL来演示机械运动的例子

    在本文中,我们将深入探讨如何使用Visual Studio 2005 (VS2005)、QT库和OpenGL来创建一个机械运动的演示程序。这是一个适合初学者的项目,可以帮助理解这三个工具的集成以及在图形化模拟中的应用。 首先,让我们...

    QT(5.9.6)+OpenGL加载显示obj模型

    在本项目中,OpenGL可能被用来增强Qt3D的渲染性能,或者在特定情况下,如自定义着色器时,与Qt3D协同工作。 3. **OBJ模型文件**: OBJ是一种通用的3D模型文件格式,包含顶点、纹理坐标、法线等几何数据,以及面...

    Linux下用QT开发OpenGL教程

    在Linux环境下,使用Qt进行OpenGL开发是一项常见的任务,Qt是一个强大的C++图形用户界面工具包,而OpenGL则是一个跨语言、跨平台的编程接口,用于渲染2D和3D图形。本教程将深入探讨如何结合这两者,在Linux系统中...

    【C++项目】Qt+OpenGL模拟太阳系行星系统.zip

    【C++项目】Qt+OpenGL模拟太阳系行星系统.zip是一个基于C++编程语言,利用Qt框架和OpenGL图形库实现的毕业设计项目。这个项目旨在模拟我们的太阳系,展示行星围绕太阳的运动轨迹,为学习者提供了对物理学、天文学...

    qt creator +opengl

    - **跨平台性**:利用Qt Creator和OpenGL,你可以创建的应用不仅限于单一操作系统,而是可以在Windows、macOS和Linux等多个平台上运行,极大地扩展了应用的适用范围。 - **高效的图形处理**:OpenGL作为高性能的...

    redhat7.4+qt5.9.3+openGL三维坐标演示程序

    在本项目中,"redhat7.4+qt5.9.3+openGL三维坐标演示程序" 是一个基于Linux操作系统Red Hat ...通过分析和运行此项目,可以深入理解Qt和OpenGL如何协同工作,以及如何在Linux环境下创建高性能的图形应用程序。

    QT+ opengl + ffmpeg 写的 全景播放器

    QT支持多种操作系统,如Windows、Linux、macOS、Android和iOS等,提供C++和QML两种编程语言。它包含了丰富的GUI组件,使得开发者能够方便地构建用户界面,同时提供了网络、数据库、XML处理等功能,是开发桌面和移动...

    vs2013+qt5.6.3+openGl.zip

    在本项目中,我们关注的是如何在Visual Studio 2013环境下集成并使用QT 5.6.3库,特别是结合OpenGL进行图形绘制。这是一个关于C++编程、图形渲染和跨平台开发的重要主题,广泛应用于游戏开发、科学计算可视化等领域...

    qt+ opengl

    在开始Qt OpenGL编程之前,需要做一些准备工作。首先,确保你的Qt版本支持OpenGL模块。对于Unix/Linux系统,自由版或企业版的Qt都支持OpenGL,而专业版则不包含此模块。通常需要安装GCC编译器和X图形环境,以及Mesa...

    使用Qt+和OpenGL+创建跨平台可视化UI

    - **跨平台性**:Qt框架支持多种操作系统,如Windows、Linux和macOS等,这意味着开发者可以使用同一套代码库来开发针对不同操作系统的应用程序,极大地简化了开发流程并降低了维护成本。 - **高性能的图形渲染**:...

Global site tag (gtag.js) - Google Analytics