QtOGRE-Qt中使用OGRE3d圖形庫


       OGRE3d的官方網站為 https://www.ogre3d.org/ ,使用該開源3D引擎的項目也很多了,我們知道在機器人模擬器中和三維游戲中使用的比較多,像Gazebo 機器人模擬器就是用的OGRE,這個開源引擎定位為三維圖形引擎,不是完整功能的游戲引擎概念,做科學計算可視化或者圖形圖像研究等方面的也很多,它是基於插件機制在下面包裝了DX和OpenGL圖形API,向上抽象了場景,節點,攝像機,材質等圖形對象,總體上具有研究價值,細節復雜,文檔和國內研究者都太少,不適合入門或者游戲集成開發商選型,基本上是別人做的很棒到自己運行都可能出錯,唯有花大量時間研究代碼和摸索,可能是該庫作者的初衷吧!今天抽空把QtOgre及相關筆記整理了一下。

       主要是參考的OGRE 的WIKI的QtOgre文章 http://wiki.ogre3d.org/QtOgre ,但是也是改了很多,工程源代碼 qtogre0.zip 的鏈接放在百度網盤上 https://pan.baidu.com/s/1Qqi-0x-UsQCpYBlL5n4YHA。基於 Qt4.8.6 和 OGRE1.8.1  步驟如下:

1.下載預編譯的 OgreSDK1.8.1 https://www.ogre3d.org/download/archives,選擇 OGRE 1.8.1 SDK for Visual C++ 2010 (32-bit),鏈接為

https://sourceforge.net/projects/ogre/files/ogre/1.8/1.8.1/OgreSDK_vc10_v1-8-1.exe/download

下載的 OgreSDK_vc10_v1-8-1 解壓到 D:\mclib ,用notepad++打開 D:\mclib\OgreSDK_vc10_v1-8-1\bin\debug\plugins_d.cfg

將 Plugin=RenderSystem_Direct3D11_d 前加 # 注掉,如下

 

 即我們缺省用OpenGL作為渲染API,免得還要安裝DX11

 

2.Qt4.8.6及VC2010環境保證也已經安裝,然后打開下載的 qtogre0.zip解壓,VC2010打開工程

這里OgreWidget類即上面wiki頁面的代碼,主要添加了:

a.構造函數設置了OgreSDK的路徑,我們是解壓在D:/mclib/OgreSDK_vc10_v1-8-1

OgreWidget::OgreWidget(QWidget *parent):
QGLWidget( parent ),
mOgreWindow(NULL)
{
// mOgreSdkPath 是OgreSDK解壓后的路徑
mOgreSdkPath = "D:/mclib/OgreSDK_vc10_v1-8-1";

...

b.bool OgreWidget::loadResource()中是加載材質相關的資源

 

c. void OgreWidget::initializeGL()中初始化了資源,似乎只能在initializeGL()中初始化資源才能成功,應該跟OpenGL上下文有關。

創建了燈光,加載了ogrehead.mesh作為測試場景模型

void OgreWidget::initializeGL()
{
...
    Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5);
    Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
...

   Ogre::Light* l = mSceneMgr->createLight("MainLight");
   l->setPosition(20,80,50);
...
   Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
   Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
}

 

3.編譯運行,在

Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups

會花一點時間,最后就是下面的運行結果,左邊的widget是UI,右邊的是OgreWidget是3D視圖

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM