QT开发OpenGL程序框架

1.开发平台:

Win all系统,Qt Creator5.7.0社区版;

2.环境配置:

1).下载OpenGL开发库;

  1. .分别将OpenGL开发库中的.h文件(如glut.h)拷贝至QT的安装路径…\include\QtOpenGL\目录下;

  2. .分别将OpenGL开发库中的.lib文件(如glut.lib,glut32.lib)拷贝至QT的安装路径…\lib\目录下;

  3. .分别将OpenGL开发库中的.dll文件(如glut.dll,glut32.dll)拷贝至QT的安装路径…\bin\目录下;

3.创建Qt Widget Application项目FrameWork,基类为QGLWidget,FrameWork.h文件如下所示:

#ifndef FRAMEWORK_H
#define FRAMEWORK_H
 
#include <QWidget>
#include <QGLWidget>
#include <QtOpenGL>
 
class FrameWork : public QGLWidget
{
    Q_OBJECT
 
public:
    FrameWork(QWidget *parent = 0);
    ~FrameWork();
 
protected:
    void initializeGL()    Q_DECL_OVERRIDE;
    void resizeGL(int width,int height) Q_DECL_OVERRIDE;
    void paintGL()  Q_DECL_OVERRIDE;
 
private:
    void draw();
};
 
#endif // FRAMEWORK_H

4.完成FrameWork.cpp中的成员函数定义,如下所示:

#include "framework.h"
 
FrameWork::FrameWork(QWidget *parent)
    : QGLWidget(parent)
{
    //指定OpenGL的显示描述表
    setFormat(QGLFormat(QGL::DoubleBuffer | QGL::DepthBuffer));
}
 
FrameWork::~FrameWork()
{
 
}
 
void FrameWork::initializeGL()
{
    //qglClearColor(Qt::black);
    glClearColor(0.1f,0.1f,0.2f,1.0f);  //颜色的不同表达方式
    glShadeModel(GL_FLAT);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_CULL_FACE);
}
 
void FrameWork::resizeGL(int width, int height)
{
    glViewport(0,0,width,height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    GLfloat x = GLfloat(width)/height;
    glFrustum(-x,+x,-1.0,+1.0,4.0,15.0);
    glMatrixMode(GL_MODELVIEW);
}
 
void FrameWork::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    draw();
}
 
void FrameWork::draw()
{
    static const GLfloat P1[3] = {0.0,-1.0,+2.0};
    static const GLfloat P2[3] = {+1.73205081,-1.0,-1.0};
    static const GLfloat P3[3] = {-1.73205081,-1.0,+2.0};
    static const GLfloat P4[3] = {0.0,+2.0,0.0};
    static const GLfloat *const coords[4][3]={
        {P1,P2,P3},{P1,P3,P4},{P1,P4,P2},{P2,P4,P3}
    };
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0,0.0,-10.0);
    for(int i=0;i<4;++i)
    {
        glBegin(GL_TRIANGLES);
        qglColor(Qt::red);
        for(int j=0;j<3;++j)
        {
            glVertex3f(coords[i][j][0],coords[i][j][1],coords[i][j][2]);
        }
        glEnd();
    }
}

5.在项目文件FrameWork.pro文件中添加包含的库,如下所示:

QT      += opengl
LIBS    = -lopengl32 -lglu32 -lglut

6.编译项目,运行结果如下所示:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的C++应用程序开发框架,它提供了大量的库和工具,用于开发各种类型的应用程序。其中,QtOpenGL模块是用于在Qt应用程序中使用OpenGL图形库的工具集合。 QtOpenGL模块提供了许多OpenGL相关的类和函数,方便开发者在Qt应用程序中进行图形渲染和处理。通过使用这些类和函数,开发者可以方便地创建各种类型的OpenGL可视化效果,如3D模型的渲染、纹理贴图、光照效果、变换等。 QtOpenGL案例实际上就是通过使用QtOpenGL模块来实现各种OpenGL图形效果的示例程序。这些案例涵盖了从简单到复杂的多个场景和功能,提供了开发者学习和参考的资源。 例如,一个简单的QtOpenGL案例可以是一个旋转的立方体。开发者可以利用QtOpenGL模块创建一个OpenGL窗口,通过设置视角、模型的旋转等参数,实现一个立方体在窗口内旋转的效果。这个案例可以帮助开发者了解如何使用QtOpenGL模块创建简单的3D图形效果。 另外,QtOpenGL模块还提供了一些高级功能,如多重采样抗锯齿、帧缓冲对象、着色器等,这些功能可以让开发者实现更复杂和高级的OpenGL图形效果。 总之,QtOpenGL案例提供了一个学习和实践的平台,开发者可以通过这些案例了解和掌握如何使用QtOpenGL模块进行图形渲染和处理。同时,这些案例也可以作为开发开发自己的OpenGL应用程序的参考和借鉴。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值