最近几天开始重新学习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();