天天看點

OpenGL ES 中如何實作在房間中檢視屋内擺設的效果

OpenGL ES 中如何實作在房間中檢視屋内擺設的效果

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

如題的效果,分析一下,不難發現,當要能看到房間内的東西時,那麼房間靠近觀察者的牆需要打掉。

那麼怎麼打掉呢?買把錘子或者用電鋸鋸得更齊刷點兒,也可能還有其它更好的辦法。

不過有一點是可以肯定的,就是隻能拿這些工具來處理房間的牆,不能掄到屋裡的東西,那麼這裡就确定了一個事兒,那就是目标僅為房間的牆。

從OpenGL ES角度來看,怎麼打掉這面牆,可能要涉及點事兒,先說明白,那就是我們看到的牆,假設是半透明的,那麼基本上會有一面或兩面牆的外面能看到,其它的牆均看不見,而我們要打掉的就是能看到外面的牆,以便看到外面看不到的牆的裡面。

基于這些非常簡的道理,我們再來看OpenGL ES給我們提供了哪些可以用的家夥事兒。

OpenGL ES有一個特性,叫背面剔除,是一種性能優化的技術,看不到的面兒,還要求GPU渲染,浪費資源,可以指定讓GPU不渲染。

另外,OpenGL ES還有一個特性,逆時針的三個點組成一個正面的三角形,也可以指定順時針三點個組成一個正面三角形,這樣三個點組成的三角形有兩個面,一個是正面兒,一個是背面兒。

有了上面OpenGL ES提供的這兩件家夥事兒,估計再用你的聰明小腦瓜子一想,這事兒就齊活了。确實地告訴您,真的齊活了,如果還沒齊活,那您就得反複琢磨琢磨了,領悟的事兒,隻可意會,不可言傳,我真沒邁關子,這事兒就得您自個兒想明白了才行,我用我這小腦袋瓜子也是這麼想明白的,花了好久,也許,您很聰 明,我這125的智商還是太低下,一下子就想明白了,那您就享福了,繼續吧。

齊活了您内!

可是...咋讓燈光照到裡面去呢?這個真有點難度!

參考資料:

羅朝輝的 OpenGL ES 2.0 iOS教程 :http://blog.csdn.net/column/details/opengl-es2-ios.html

繼續閱讀