青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

清源游民 gameogre@gmail.com

OGRE渲染對象
Ogre中的render target 只是共享AGP內存或顯存的某個區域的抽象,這個區域中保存著全部或部分場景2D渲染結果。最普通的render target是主渲染窗口,這是應用程序的主窗口。使用這個render target不需要做太多另外的努力,ogre可以幫我們創建它。還可以把場景中的全部或部分(甚至是場景中不可見的部分)渲染到一個紋理,這個紋理可以被場景中的其他多邊形使用。目標硬件緩沖在ogre中抽象為render target,它的物理顯示可以為主渲染窗口,也可以是副窗口,也可以是非可視的:紋理。
渲染對象也是事件源,假如程序注冊了這事件,ogre會在pre- 和 postrender時通知程序,這給程序改變設置,做出響應的機會。甚至在視口(viewport)級別上pre-,post- 渲染時也有上述通知機制。ogre提供了計算渲染狀態信息的功能,如多長時間渲染一幀,渲染對象上有多少三角形等。
渲染窗口
窗口是由渲染系統的具體實現創建與維護的(D3D9下是個標準的Win32 Window)。Ogre允許對渲染窗口進行很少的配置,限于尺寸,標題欄文字等。假如希望開發的程序有菜單,工具欄等,把ogre的渲染輸出到
窗口的客戶區,這是可能的。ogre可以提供你系統相關的窗口句柄給渲染窗口,也允許你提供句柄給父窗口。第一個創建的ogre渲染窗口稱為主窗口。另外創建的是副窗口。窗口不像主窗口那么重要。假如在程序中有三個窗口,那么為了正確的進行資源清理,必須在銷毀主窗口前把另外兩個副窗口銷毀。
視口
渲染窗口包含一個或多個視口。視口是一個長方形區域,場景管理器把從一個相機中看到的場景可見內容
的透視圖渲染到這個區域中。視口創建時會引用一個相機,但這不是視口的靜態屬性,可以隨時改變用于
渲染視口的相機。每個視口擁有一個z序數,z序高的位于Z序低之上。z序0,總是被一個能覆蓋整個渲染對象的視口所擁有。缺省,ogre會清理視口的顏色與深度緩沖。然而,可以關閉這些緩沖清理。視口是渲染對象(也就是特定的渲染系統,如OpenGL)與相機(也就是特定場景管理器與它的內容)之間的唯一交互點。視口不必占用整個渲染對象的表面。3D渲染相機不是真正的相機,所有的幾何LoD計算是以相機的位置算的,因此不能簡單的改變相機的焦點屬性來達到“更近”的渲染效果。
渲染到紋理
使用步驟是:創建一個紋理渲染對象,配置它的渲染屬性,加紋理到渲染對象列表,設置紋理到被使用的材質。紋理對象先于其他渲染對象類型更新,這就保證了使用了渲染紋理的對象正確地被渲染。渲染紋理可以像其他普通紋理一樣被處理。對于那些不需要每幀都更新的渲染紋理,可以關閉自動逐幀更新而采用手動更新。從底層看,紋理對象就是一塊硬件緩沖。為了性能考慮,認為它們是只寫與靜態的。渲染到紋理會渲染場景中的幾何,需要一些時間執行,會降低應用程序幀率。但是很多有用的技術現在離不開渲染到紋理的使用。實時陰影,實時反射等。ogre支持渲染到多個紋理,唯一的限制是它們就具有相同的寸。
渲染對象類
RenderTarget是RenderWindow,MultiRenderTarget,與RenderTexture的基類。
RenderWindow通過子類化來實現:D3D9RenderWindow,GLXWindow等。在windows操作系統中,由于可以使用Direct3D 9或是OpenGL,于是可以分別使用D3D9RenderWindow,Win32Window。
RenderSystem::createRenderWindow()來創建窗口。
virtual RenderWindow* Ogre::RenderSystem::createRenderWindow? (? const String &? name,?
? unsigned int? width,?
? unsigned int? height,?
? bool? fullScreen,?
? const NameValuePairList *? miscParams = 0
?)?
通過最后一個參數,可以設置窗口的一些屬性。
將渲染窗口嵌入外部窗口的代碼
NameValuePairList params; // is just a typedef std::map<std::string, std::string>
// set external window handle -- assume that you have
// already created a window to embed the Ogre render window, and its handle is
// stored in an integer variable called "mParent"
params["externalWindowHandle"] = StringConverter::toString(mParent);
// window can be resized later to fit within parent client area if needed
RenderWindow* window = createRenderWindow("MyWindow", 800, 600, false, &params);
渲染到紋理Demo
demo在原點創建了一個傾斜的平面,設置相機,把場景(場景由一個魔鬼腦袋與幾個環面紐結組成)
相對于平面的倒影渲染到紋理中。渲染紋理與平面已經應用的靜態紋理混合,這樣就實現了反射效果。
創建渲染紋理:
TexturePtr texture = TextureManager::getSingleton().createManual( "RttTex",
?????????????????????????????? ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D,
????????????????????????????? 512, 512, 0, PF_R8G8B8, TU_RENDERTARGET );
創建相機與視口用于渲染到紋理:
?????????? ? mReflectCam = mSceneMgr->createCamera("ReflectCam");
??????????? mReflectCam->setNearClipDistance(mCamera->getNearClipDistance());
??????????? mReflectCam->setFarClipDistance(mCamera->getFarClipDistance());
??????????? mReflectCam->setAspectRatio(
??????????????? (Real)mWindow->getViewport(0)->getActualWidth() /
??????????????? (Real)mWindow->getViewport(0)->getActualHeight());
??????????? Viewport *v = rttTex->addViewport( mReflectCam );
??????????? v->setClearEveryFrame( true );
??????????? v->setBackgroundColour( ColourValue::Black );
創建使用渲染紋理的材質
MaterialPtr mat = MaterialManager::getSingleton().create("RttMat",
??????????????? ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
??????????? TextureUnitState* t = mat->getTechnique(0)->getPass(0)->createTextureUnitState("RustedMetal.jpg");
??????????? t = mat->getTechnique(0)->getPass(0)->createTextureUnitState("RttTex");
??????????? // Blend with base texture
??????????? t->setColourOperationEx(LBX_BLEND_MANUAL, LBS_TEXTURE, LBS_CURRENT, ColourValue::White,
??????????????? ColourValue::White, 0.25);
????????? ??t->setTextureAddressingMode(TextureUnitState::TAM_CLAMP);
????????? ??t->setProjectiveTexturing(true, mReflectCam);
??????????? rttTex->addListener(this);
材質名為RttMat,包含一個技術,后者有一個通道。通道有兩個紋理單元,一個為靜態紋理(RustedMetal.jpg)
,另一個紋理單元為渲染紋理,兩個紋理按比例混合。設置了合適的紋理尋址模式,開啟了透視紋理支持。
并為渲染紋理(它是渲染對象)注冊了偵聽器。
相機倒置使用材質:
??????????? // set up linked reflection
??????????? mReflectCam->enableReflection(mPlane);
??????????? // Also clip
??????????? mReflectCam->enableCustomNearClipPlane(mPlane);
??????? }
?????????? // Give the plane a texture
???????? ? mPlaneEnt->setMaterialName("RttMat");
相機這樣設置后,渲染出的將是場景的倒影,這是以指定平面為參照的。定制最近裁剪平面的作用是:
那些低于反射面的對象將不會再被渲染。渲染紋理時,并不想把平面也渲染進去,可以在上邊已經注冊
偵聽器做點手腳
void preRenderTargetUpdate(const RenderTargetEvent& evt)
??? {
??????? // Hide plane
??????? mPlaneEnt->setVisible(false);

??? }
??? void postRenderTargetUpdate(const RenderTargetEvent& evt)
??? {
??????? // Show plane
??????? mPlaneEnt->setVisible(true);
??? }
最后要提的是,在每一幀,都要使兩個相機的位置,朝向保持一致:
frameStarted:
?mReflectCam->setOrientation(mCamera->getOrientation());
? mReflectCam->setPosition(mCamera->getPosition());

posted on 2007-03-15 17:25 清源游民 閱讀(2392) 評論(0)  編輯 收藏 引用 所屬分類: OGRE
<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

留言簿(35)

隨筆分類(78)

隨筆檔案(74)

文章檔案(5)

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            老司机午夜精品| 国产一区二区成人| 亚洲乱码国产乱码精品精天堂 | 欧美成人精品一区二区| 久久久www免费人成黑人精品| 欧美一级电影久久| 午夜精品一区二区三区在线播放 | 一本一道久久综合狠狠老精东影业| 亚洲大胆视频| 日韩亚洲成人av在线| 中日韩男男gay无套| 亚洲欧美另类在线观看| 欧美一区二区免费观在线| 欧美在线视频网站| 欧美成人在线网站| 99日韩精品| 久久精品国产亚洲一区二区| 美乳少妇欧美精品| 欧美日韩一区二区在线| 国产一区二区三区在线免费观看| 亚洲黄色成人| 久久国产精品久久久久久| 亚洲国产裸拍裸体视频在线观看乱了中文 | 久久久久久久性| 欧美激情精品久久久久久变态| 亚洲人午夜精品免费| 欧美成人69av| 亚洲国产精选| 正在播放欧美视频| 在线视频中文亚洲| 欧美一区国产二区| 久久久久久久一区| 欧美日韩亚洲高清| 国产精品男女猛烈高潮激情| 国产精品入口夜色视频大尺度 | 久久一区激情| 国产嫩草一区二区三区在线观看 | 亚洲国产综合视频在线观看| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 久久精品人人做人人综合| 亚洲一区高清| 麻豆91精品91久久久的内涵| 亚洲一区二区三区四区在线观看| 久久成人免费日本黄色| 欧美在线视频免费播放| 国产精品国产三级国产a| 狠狠久久亚洲欧美| 久久国产婷婷国产香蕉| 91久久精品日日躁夜夜躁欧美| 久久精品视频导航| 欧美色区777第一页| 一本色道久久综合精品竹菊| 玖玖国产精品视频| 欧美激情一区二区三区高清视频| 亚洲一级网站| 欧美激情片在线观看| 亚洲国产毛片完整版| 午夜一区在线| 亚洲一区激情| 欧美日韩一区二| 亚洲一区二区伦理| 亚洲激情在线| 欧美精品一线| 亚洲国产视频一区| 亚洲黄色免费网站| 中文国产一区| 亚洲欧美日韩区 | 一本大道久久a久久精二百| 亚洲天堂成人| 亚洲日韩中文字幕在线播放| 亚洲女同在线| 麻豆九一精品爱看视频在线观看免费 | 国产在线精品自拍| 亚洲一区二区三区四区五区午夜 | 亚洲欧洲av一区二区| 亚洲精品美女在线| 午夜久久美女| 一区免费观看| 女人天堂亚洲aⅴ在线观看| 噜噜爱69成人精品| 亚洲国产精品日韩| 这里只有精品视频在线| 欧美日韩一级黄| 久久精品国产亚洲a| 亚洲欧美在线播放| 狠狠色丁香婷婷综合影院| 久久久久久一区二区| 香蕉久久国产| 一区二区福利| 在线中文字幕日韩| 伊人成人网在线看| 亚洲第一黄色| 国产精品丝袜91| 久久久久久黄| 欧美日韩国产页| 午夜视频在线观看一区二区| 久久久.com| 亚洲精品一区二区三区婷婷月| 中文欧美在线视频| 韩国av一区二区三区四区| 亚洲欧美日韩精品久久亚洲区 | 欧美成人a视频| 日韩午夜黄色| 亚洲一级二级在线| 91久久久一线二线三线品牌| 亚洲人体1000| 国模精品一区二区三区| 欧美bbbxxxxx| 国产农村妇女精品| 亚洲电影下载| 狠狠色综合网| 国产亚洲激情视频在线| 亚洲视频一区二区免费在线观看| 国产美女在线精品免费观看| 亚洲黄色一区二区三区| 欧美日韩国产色综合一二三四| 91久久精品国产| 在线亚洲一区二区| 欧美日韩不卡视频| 亚洲欧洲一二三| 性色av一区二区三区| 欧美国产激情二区三区| 黑人操亚洲美女惩罚| 亚洲国产日韩美| 国产日产精品一区二区三区四区的观看方式 | 亚洲视频你懂的| 国产亚洲精品久久久| 国产精品夜夜嗨| 黄色av一区| 欧美高清在线一区二区| 国内精品久久久久久影视8| 亚洲激情视频| 亚洲日本中文字幕区 | 久久精品麻豆| 午夜视频在线观看一区二区三区| 亚洲日本va在线观看| 欧美在线视频一区二区| 久久国产一二区| 国产精品va| 亚洲一区二区三区色| 狠狠色综合一区二区| 久久精品国产69国产精品亚洲| 国产在线不卡| 欧美尤物一区| 久久综合伊人77777尤物| 国产亚洲亚洲| 久久成人综合视频| 久久精品亚洲一区| 伊人久久成人| 久久久91精品国产| 亚洲二区三区四区| 亚洲国产精品尤物yw在线观看| 可以看av的网站久久看| 亚洲图片欧洲图片日韩av| 欧美午夜性色大片在线观看| 亚洲一区综合| 欧美国产精品人人做人人爱| 在线免费日韩片| 国产日韩一区欧美| 国产日本欧美在线观看| 欧美激情亚洲视频| 久久久青草婷婷精品综合日韩 | 伊甸园精品99久久久久久| 牛人盗摄一区二区三区视频| 一区二区三区 在线观看视| 狠狠干成人综合网| 鲁大师影院一区二区三区| 两个人的视频www国产精品| 亚洲丁香婷深爱综合| 亚洲自拍16p| 欧美不卡三区| 黄色一区二区在线| 欧美日韩免费一区| 欧美激情91| 亚洲国产成人久久综合| 欧美极品欧美精品欧美视频| 日韩一级片网址| 蜜臀va亚洲va欧美va天堂| 亚洲另类在线视频| 国产一区二区三区在线播放免费观看| 久久久91精品国产一区二区三区| 亚洲黄网站黄| 欧美在线视频免费播放| 亚洲日本在线观看| 国产精品丝袜91| 欧美欧美天天天天操| 亚洲一品av免费观看| 蜜臀久久99精品久久久久久9 | 亚洲欧美日韩国产| 久久米奇亚洲| 亚洲曰本av电影| 国产在线视频欧美一区二区三区| 欧美日韩国产在线一区| 亚洲欧美在线视频观看| 亚洲精品欧美日韩| 久久精品国产精品亚洲| 亚洲欧美日韩国产中文| 亚洲高清久久久| 在线成人h网| 欧美激情一区二区三区在线视频|