在ogre中,動態建立mesh一般有兩種方法:其一,通過manualobject的converttomesh,建立manualobject是中間過程,converttomesh過後,此建立的manualobject就可以remove掉了;其二,通過hardwarebuffer直接建立mesh。第一種方法相對來說比較簡單(就不多說了),下面具體說說第二種方法:
1. 建立mesh:meshptr mesh = meshmanager::getsingleton().createmanual("meshname", "general");
第乙個引數:mesh的名稱,第二個引數:mesh所屬的組
2. 建立submesh:submesh * submesh = mesh->createsubmesh();
3. 建立好了mesh和submesh後,就可以填充vertexbuffer和indexbuffer了:
1). 需要分配一段記憶體區間:如float * cube = new float[num],然後填充這段記憶體:
注意: a.分配區間一定要足夠大;b、填充區間的時候可以根據position、normal和coordination(或者specularcolor,diffusecolor...)的順序依次填充每乙個定點;也可以分別每乙個分配乙個單獨的buffer區間!
2). 定義vertexdeclaration,如:vertexdeclaration * decl = mesh->sharedvertexdata->vertexdeclaration;
然後就可以addelement:
size_t offset = 0;
decl->addelement(0, offset, vet_float3, ves_position);
offset += vertexelement::gettypesize(vet_float3);
(此處省略號代表要新增的element的型別,如果需要新增多個element就可以照上面的順序依次新增)
3). 建立vertexbuffer:vertexbuffer = hardwarebuffermanager::getsingleton().createvertexbuffer(offset, vertexcount, ......);
4). 新增資料到vertexbuffer中:vertexbuffer->writedata(..........);
5). 如果需要分別新增element,可以重複1-4部;
6)。建立indexbuffer,方法同vertexbuffer相似,不多說了
4. 填充相關資料:sub->usesharedvertices = true;
submesh->indexdata->indexbuffer = ibuf;
submesh->indexdata->indexcount = ibufcount;
submesh->indexdata->indexstart = 0;
到此步驟,mesh就建立出來了。就可以和ogre提供的mesh資源一樣使用了^_^
最重要的是:
建立好的mesh資源,在程式退出(或者重新建立相同名稱的mesh)的時候,務必要通過meshmanager::getsingleton().unload("meshname")和remove("meshname")將其刪除掉。雖然程式退出的時候,系統會自動去掉,不過有時候也會出現相關的錯誤!!!!比如當需要更新mesh資訊的時候,就必須首先把它刪除掉再重新再建立,不這樣做的話是無法更新mesh的資訊。
ogre Mesh的渲染流程
首先乙個 entity 物件必須 attach 到乙個scenenode。1 建立乙個 scenenode scenemanager getrootscenenode 在scenemanager init 時會建立乙個 rootnode scenenode createchildscenenode ...
pythonpip使用方法 pip使用方法整理
匯出專案已安裝的pip包 pip list 檢視專案中安裝的包 pip freeze requirements.txt 將專案中所用到的第三方庫輸出到requirements.txt中 pip install 版本號 pip install i 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...
機械秒錶的使用方法 秒錶的使用方法!
秒錶是一種常用的測時儀器。又可稱 機械停表 由暫停按鈕 發條柄頭 分針等組成。它是利用擺的等時性控制指標轉動而計時的。它是利用擺的等時性控制指標轉動而計時的。在它的正面是乙個大表盤,上方有乙個小表盤 圖1.4 2 秒針沿大表盤轉動,分針沿小表盤轉動。分針和秒針所指的時間和就是所測的時間間隔。在表正上...