QT开发OpenGL程序框架

11 篇文章 1 订阅
7 篇文章 2 订阅

1.开发平台:Win7系统,Qt Creator5.7.0社区版;

2.环境配置:

1).下载OpenGL开发库;

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

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

4) .分别将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.编译项目,运行结果如下所示:

 




 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值