天天看点

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

继续阅读