贴图程序进展
從2.28號到現(xiàn)在,在休息,在此先整理下之前的情況,對問題和要做的內(nèi)容進行一下梳理。
首先,把之前的問題稍做下總結(jié),上次提到OpenGL版本這塊,我的是1.1版本,所以就只能用頂點數(shù)組來實現(xiàn)了,否則效率很差,本來以為頂點數(shù)組只能用靜態(tài)的數(shù)組實現(xiàn),我打錯特錯了,普通的數(shù)組就可以了,這樣就算頻繁的進行修改,也可以滿足我的需求了,這就解決了我一大技術問題,這是最主要的,頂點數(shù)組用glDrawArrays或者glDrawElements來繪制,前者基于原先的頂點數(shù)組的范圍,后者指定新的索引數(shù)組,更具靈活性,參見這,一篇更詳細的在這,之后有很多的擴展,功能更強大,當然,需要高點的OpenGL版本,然后在NeHe的教程里看到了一份關于頂點數(shù)組的代碼,借鑒了一下,把我原先用顯示列表的方法,全改成頂點數(shù)組,就在相應的地方,添加進我需要操作的數(shù)據(jù),頂點數(shù)組,三角面的頂點索引,法向量數(shù)組,相應紋理的坐標數(shù)組,每次分兩個步驟還繪制,普通面的繪制,加上紋理面的繪制,然后就完成了。這樣子,效率大大的提高了,感覺有一個數(shù)量級了,然后就完了,改代碼的時候比較痛苦一點(這個頂點數(shù)組的方法指的就是把點的信息一塊繪制出來,也就是說紋理,顏色,法向量都是基于點的,也就說模型必須是光滑的,紋理共用的一張貼圖要有意義),同時也出現(xiàn)了個很詭異的問題,就是加載兩張圖片的時候,紋理映射出現(xiàn)了Bind的問題,感覺紋理沒Bind成功,找了半天找不出錯誤,今天發(fā)現(xiàn)只要在Bind使用之后,再用TexEnv來設置映射環(huán)境參數(shù),就好了,和上次的那個問題一樣,不知道為什么。實現(xiàn)了曲線的選擇這個功能,用一個點棧去維護就可以了,后來才被老師指正這個只能選定凸多邊形的集合,好吧,作為一個菜鳥,漸漸習慣了,恩,大致就這個樣子了。
然后,上一張圖來演示下目前的進展情況:
接著,羅列下存在尚需思考的問題:
1. 代碼結(jié)構紊亂,畢竟是在開源結(jié)構上進行的開發(fā),現(xiàn)在導致,又需要他們的數(shù)據(jù)結(jié)構,又需要我的數(shù)據(jù)結(jié)構,所以兩邊都運行,這樣從效率上還是結(jié)構上都是很差的,想著要重寫,因為快受不了了,可是擔心后面的需求導致的變化,會影響更大,先留著他們的數(shù)據(jù)結(jié)構,說不準會用的上,最后才重新規(guī)劃設計下代碼數(shù)據(jù)結(jié)構好了。
2. 基于Doc-View的架構與對象上的數(shù)據(jù)存放問題,必須使得多文檔要一致,即要確保多文檔是有效的。因為我現(xiàn)在在有點功能上,多文檔等同于單文檔了,沒有很好的理解文檔/視圖這個架構。
最后,列舉下需要做的:
1. 三角面有些不是朝外的,需要預處理修正下,才菜單上添加下這個功能。
2. 添加視圖的方向,包括6個正視圖,軸側(cè)視圖,3點指定一個平面,做投影。
3. 判斷遮擋關系,確保只貼最外層的三角面。
4. 對圖像進行預處理,選取一個有效區(qū)域。
5. 對象從X方向和Y方向上,可以進行對齊設定。
6. 可以看到剖視圖,這樣就可以貼內(nèi)膽。
7. 可以拾取點或三角形,設置顏色。
8. 支持最少三種文件,obj/wrl/ply。
9. 可以完成多張的貼圖工作,支持多張圖片的顯示,用TabControl什么的。
10. 使用四叉樹,鏈表等數(shù)據(jù)結(jié)構,支持實時的拾取和判斷遮擋關系的優(yōu)化,加速。
11. 支持點在凹多邊形內(nèi)的判定。
PS: 十分感謝老師的指導~
轉(zhuǎn)載于:https://www.cnblogs.com/litstrong/archive/2011/03/06/1972321.html
總結(jié)
- 上一篇: iPhone5:4G是否进入主流的风向标
- 下一篇: (转帖)对抽象编程:接口和抽象类