OGRE与Qt的结合(一)----使用OGRE渲染QWidget

本文介绍了如何将Ogre2.1渲染引擎与Qt结合,创建一个Qt Widgets Application,并在pro文件中配置相关设置,使得Ogre能够渲染QWidget。作者在学习过程中发现相关教程稀缺,主要参考了Ogre官方Wiki的教程,成功实现了Ogre在Qt主窗口中显示。下一步计划是添加帧监听器、加载地形以及通过COM组件操作Ogre。
摘要由CSDN通过智能技术生成

         最近几天开始重新学习Ogre,这次从源码编译了Ogre2.1,编译过程基本跟Ogre1.8.1类似,连第三方依赖库都是用的官网推荐的以前版本的,此处不多说了,网上有很多教程,现在给出下载连接。

         Ogre2.1的源码:  https://bitbucket.org/sinbad/ogre/branch/v2-1

         Dependencies: https://bitbucket.org/cabalistic/ogredeps

         编译好Ogre后开始尝试将其嵌入到Qt中,发现网上的指导教程非常的少,而且含糊不清,对于想上手的人来说非常困难。发现Ogre的Wiki有现成的结合Qt配置方案,给出网址 http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Setting+Up+An+Application+-+QtCreator  参考。具体来说,主要是在Qt项目的pro文件中配置。以下是个人结合参考做出的Ogre渲染QWidget的例子。

        1、新建一个Qt Widgets Application,在pro文件中添加配置信息如下

OGRE_HOME  =  D:/OGRE/Ogre2.1
 
LIBS *= user32.lib
LIBS += -L$${OGRE_HOME}/boost/lib
 
debug:   LIBS   += -L$${OGRE_HOME}/lib/debug
release: LIBS   += -L$${OGRE_HOME}/lib/release
 
INCLUDEPATH   +=  $${OGRE_HOME}/include
INCLUDEPATH   +=  $${OGRE_HOME}/include/OGRE
INCLUDEPATH   +=  $${OGRE_HOME}/include/OIS
INCLUDEPATH   +=  $${OGRE_HOME}/boost
CONFIG(debug, debug|release){
 
    LIBS *= -lOgreMain_d -lOIS_d -lOgreTerrain_d
    DESTDIR = $${OGRE_HOME}/bin/debug
}
else{
 
    LIBS *= -lOgreMain -lOIS -OgreTerrain
    DESTDIR = $${OGRE_HOME}/bin/release
}
     2、新建类 TestOgre,并继承自QWidget。在TestOgre这个类中,实现创建Ogre的Root对象,定义资源,设置渲染引擎,创建渲染窗口,初始化资源,创建场景,

设置第三方库和插件库,创建帧监听器,启动渲染循环等工作。主要参考了Ogre Wiki的教程6

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Basic+Tutorial+6&structure=Tutorials

TestOgre.h

#ifndef TESTOGRE_H
#define TESTOGRE_H
 
#include <QtGui>
#include <Ogre.h>
 
class TestOgre : public QWidget
{
 
     Q_OBJECT
public:
     TestOgre(QWidget *parent = 0);
    ~TestOgre();
 
 
     // Override QWidget::paintEngine to return NULL
     QPaintEngine* paintEngine() const; // Turn off QTs paint engine for the Ogre widget.
 
 protected:
 
     virtual void paintEvent(QPaintEvent *e);
     virtual void resizeEvent(QResizeEvent *e);
     virtual void showEvent(QShowEvent *e);
 
 private:
     void                               InitOgreSystem();
     void                               SetupAndLoadResources();
     void                               CreateScene();

                
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值