Qt的Graphics-View框架和OpenGL结合详解

本文详细介绍了如何将Qt的Graphics-View框架与OpenGL结合,通过一个实际的demo展示结合过程,包括初始化、OpenGLView的设置、drawBackground()函数的实现以及GraphicsScene的处理。文章还提及了Ubuntu环境下程序的运行情况。
摘要由CSDN通过智能技术生成

QtGraphics-View框架和OpenGL结合详解

演示程序下载地址:这里

程序源代码下载地址:这里


这是一篇纯技术文,介绍了这一个月来我抽时间研究的成果。

Qt中有一个非常炫的例子:Boxes,它展示了Qt能够让其Graphics–View框架和QtOpenGL模块结合起来,渲染出非常出色的效果。其实我私自认为凭这个程序,已经有很多游戏开发者关注Qt了,因为游戏开发一个非常常见的模块就是UI,一般情况下游戏引擎提供的UI模块比较弱,基本上都是游戏引擎+第三方GUI库进行结合的。但是Qt以其Graphics–View框架能够非常轻松地将UI控件嵌入场景中,而且能够和OpenGL底层共存,更重要的是,凭借着QtqssQt可以定制许多GUI元素,这是非常具有吸引力的。所以说,如果大家对游戏开发感兴趣,那么不妨看一下Qt

好了,下面介绍一下前几天我制作并发布的一个demo。这个demo是对Boxes这个例子进行模仿,结合学习《OpenGL超级宝典》,制作而成的,由于最近比较忙,所以总共花了将近一个月才完成,不得不说效率有点儿低。

首先从MainWindow.cpp这个文件说起吧,一开始是要初始化MainWindow类的,这个类是继承QMainWindow的,这里重点说说它的构造函数:

MainWindow::MainWindow( QWidget* pParent ):
    QMainWindow( pParent )
{
    
    QGLWidget* pWidget = new QGLWidget( QGLFormat( QGL::SampleBuffers ), this );
    pWidget->makeCurrent( );
    // scene的内容
    GraphicsScene* pScene = new GraphicsScene( this );
    OpenGLView* pView = new OpenGLView( this );
    pView->setViewport( pWidget );
    pView->setViewportUpdateMode( QGraphicsView::FullViewportUpdate );
    pView->setScene( pScene );
    // 选择不同的着色器的时候进行着色器连接
    connect( pScene, SIGNAL( SwitchShader( const QString& ) ),
             pView, SLOT( SwitchShader( const QString& ) ) );
    connect( pScene, SIGNAL( SetLightPos( const QVector3D& ) ),
             pView, SLOT( SetLightPos( const QVector3D& ) ) );
    setCentralWidget( 
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值