2012-06-21 42 views
0

我爲模型查看器編寫了一個collada加載程序。網格三角剖分:分離與嵌套循環複雜度

現在寫它遍歷所有的頂點和索引,並創建索引和頂點緩衝區,以便我可以渲染網格。

如果模型不是三角形的,我有兩個選項。我可以在將索引寫入我的緩衝區時對其進行traing(即計算並添加更多索引以創建三角形)。

或者我可以在編寫緩衝區之前使整個網格完整,並保留緩衝區系統原樣(假定網格在手邊進行三角化)。

爲了事先手動模型,我需要將整個東西加載到列表循環中,然後插入新的索引來將4個多邊形分解爲tirangles。

如果我按照我寫的網格進行三角化,我需要對4+多邊形進行編寫,將它們放入一個單獨的緩衝區,然後當緩衝區中有整個4+多邊形時,對它進行三角化並寫入新的指數。

這實際上會爲循環添加另一個循環,每次遇到4+三角形時纔會觸發該循環。

這是迄今爲止我寫的迄今爲止最爲複雜的東西,所以我很難把我的頭圍繞着哪個方向更有效。

其中一個涉及通過複製整個網格來使用兩倍的內存量,以便我可以處理它,另一個涉及一個嵌套for循環,只有當它遇到4個多邊形時纔會觸發。

任何人都可以提供任何意見,我怎麼可以衡量這兩個選項的複雜性,而不需要進行書面和測試兩者?

回答

1

添加一個內部循環來處理偶然的​​情況是好的。如果我正確理解你的問題,你將需要測試多邊形並按需要進行三角測量;有條件地執行的內部循環就是適當的反映。

如果您認爲內部循環會使您的函數太長/難看/難以閱讀,您可以編寫一個單獨的包含內部循環的「triangulate_polygon()」函數,並有條件地調用它。