天天看點

關于 OpenGL 中平移矩陣變換與實體對象坐标平移的關系分析結論

關于 OpenGL 中平移矩陣變換與實體對象坐标平移的關系分析結論

<a target="_blank" href="http://blog.csdn.net/opengl_es">轉載請保留此句:太陽火神的美麗人生 -  本部落格專注于 靈活開發及移動和物聯裝置研究:iOS、Android、Html5、Arduino、pcDuino,否則,出自本部落格的文章拒絕轉載或再轉載,謝謝合作。</a>

除題目中所提及的平移矩陣變換和對象坐标平移,還有旋轉的中心點設定(弄不好,旋轉後,看不到幾何體)以及錄影機視角兩個未明确問題,仍需進一步研究明确,才不至于被隐形的幾何體搞得無所适從。

言歸正傳,本人近期研究的結果是:

1、平移這種矩陣變換,隻是對場景中所有幾何體進行了平移,好像和觀察視角是一個道理,但确實還不太知道,是否就是錄影機視角;

2、對象坐标平移,是真實的去移動幾何體在場景中的位置,這個需要從幾何體的頂點坐标着手,進行整體坐标量的加減,對于一個大的或細節較多的幾何體來說,計算量稍顯龐大,尚不知性能如何,猜測本人目前遇到的問題,可能就是需要通過這一技巧才能解決;最主要的是,幾何體的坐标一改變,頂點緩存就要重建,這樣就無形增加了與GPU通訊所帶來的性能問題,理論上是這樣的,也還需要進一步細化分析,修改完善代碼進行測試才能知曉。

通過看别人的展示效果,感覺實際操作中,

一是要能從各個角度去看這個場景及場景中的物體,這個就是矩陣變換中平移、旋轉、縮放所要做的事情了,隻需更新變換參數到GPU中即可,相對附加工作量要小很多;

二是實際場景中,将幾何體從一個位置移到另一個位置,這個并不涉及觀察視角的問題,而是視角保持不變,而幾何體要進行移動,涉及到幾何體頂點坐标的修改與GPU中頂點緩存的更新,相對更新量要大一些;尚不知這種作法是否是正确的和常用的,有待進一步搜集資料後,再做研究、調測;

說來,以上兩種改變幾何體在螢幕中位置的作法,真的是根本不同的兩種東西,不過一直以來,我是在拿第一種作法當作第二種問題的解決方式,故而達不到預期效果,從分析來看,應該是符合情理的。

以上僅為一種問題的分析思路,并不一定符合實際情況,僅供參考。

後續針對以上分析研究結論,再行實際修改、調測,希望能如我所願,達到預期效果,屆時再更新本文。

繼續閱讀