用OpenInventor實現的NeHe OpenGL教程-第十六課

 

OpenInventor實現的NeHe OpenGL教程-第十六課

 

      

 

這節課我們將在前面講述的第七節課程的基礎上,對場景增加上 的效果。OpenInventor中添加 效果還是很容易的。OpenInventor提供了一個叫做SoEnvironment的節點類,通過這個節點類,我們就可以實現 的效果。

 

       下面的代碼是在第七節課程的基礎上增加或修改的代碼。先定義一些全局變量。

SoEnvironment*              g_pEnvironment = NULL; //定義環境節點

 

       和以前的代碼一樣,我們將在函數BuildScene中創建場景數據。

void BuildScene(void)

{

//創建環境節點,環境節點可以設置霧的顏色,和霧的類型。OpenInventor提供了三種霧類型,分別//HAZE,FOG,SMOKE,分別對應着OpenGLGL_EXPGL_EXP2GL_LINEAR模式

     g_pEnvironment = new SoEnvironment;

     g_pEnvironment->fogColor.setValue(0.5f, 0.5f, 0.5f);

     g_pEnvironment->fogType = SoEnvironmentElement::FOG;

     g_pOivSceneRoot->addChild(g_pEnvironment);

 

     //剩下的代碼和第七節課程相同。

}

 

    下面的代碼是鍵盤響應函數。

void KeyboardEventCB(void *userData, SoEventCallback *pEventCB)

{

//相應G鍵,來修改霧的類型

     if(SO_KEY_PRESS_EVENT(pEvent,G))

     {

         static int fogfilter = 0;

         fogfilter = (++fogfilter) % 3;

         if(fogfilter == 0)

              g_pEnvironment->fogType = SoEnvironmentElement::FOG;

         else

         if(fogfilter == 1)

              g_pEnvironment->fogType = SoEnvironmentElement::SMOKE;

         else

         if(fogfilter == 2)

              g_pEnvironment->fogType = SoEnvironmentElement::HAZE;

     }

     pEventCB->setHandled();

}

 

       現在編譯運行我們程序,屏幕上顯示一個帶有紋理的立方體。按下左右方向鍵,立方體將繞Y軸旋轉。按下上下方向鍵,立方體將繞X軸旋轉。按下PnUp/PnDn鍵,立方體將放大或縮小。按下F鍵,立方體的紋理品質將發生變化。按下L鍵將打開或關閉燈光。按下G鍵將修改霧的渲染效果。效果和NeHe第十六課是相同的。

 

本課的完整代碼下載。(VC 2003 Coin2.5

 

 

後記

OpenInventor是一種基於OpenGL的面向對象的三維圖形軟件開發包。使用這個開發包,程序員可以快速、簡潔地開發出各種類型的交互式三維圖形軟件。這裏不對OpenInventor做詳細的介紹,讀者如果感興趣,可以閱讀我的blog中的這篇文章《OpenInventor 簡介》。

 

NeHe教程是目前針對初學者來說最好的OpenGL教程,它可以帶領讀者由淺入深,循序漸進地掌握OpenGL編程技巧。到目前爲止(200711月),NeHe教程一共有48節。我的計劃是使用OpenInventor來實現所有48節課程同樣的效果。目的是複習和鞏固OpenGL的知識,同時與各位讀者交流OpenInventor的使用技巧。

 

       因爲篇幅的限制,我不會介紹NeHe教程中OpenGL的實現過程,因爲NeHe的教程已經講解的很清楚了,目前網絡中也有NeHe的中文版本。我將使用VC 2003作爲主要的編譯器。程序框架採用和NeHe一樣的Win32程序框架,不使用MFC。程序也可以在VC ExpressVC 2005/2008中編譯。我採用的OpenInventor開發環境是Coin,這是一個免費開源的OpenInventor開發庫。文章 OpenInventorCoin3D開發環境 介紹瞭如何在VC中使用Coin。我使用的Coin版本是2.5。讀者可以到 www.coin3d.org 中免費下載。

 

       讀者可以在遵循GNU協議的條件下自由使用、修改本文的代碼。水平的原因,代碼可能不是最優化的,我隨時期待讀者的指正和交流。轉載請註明。謝謝。

我的聯繫方式:

E-mail: < [email protected] > < [email protected] >

Blog: < http://blog.csdn.net/RobinHao >

Site: < http://www.openinventor.cn >

發佈了55 篇原創文章 · 獲贊 15 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章