关于OpenGL的天空盒的理解

参考:https://learnopengl-cn.readthedocs.io/zh/latest/04%20Advanced%20OpenGL/06%20Cubemaps/

 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

关于天空盒-空间概念上:
可以理解为一个盒子,内壁贴着贴图,我们位于盒子内,盒子离我们无穷远。我们抬头向四面看,最远处是这个盒子的内壁,由于我们始终位于盒子内,所以我们不会看到盒子以外的部分。

OpenGL实现上:
通常是:天空盒采用6张可以连接缝合的天空图片,贴图到一个立方体内部(通常采用0,0,0圆心,长度为1或2的立方体即可);然后把camera放入到立方体的中心,视棱锥从立方体的中心向外发出,映射到立方体颜色作为找到的屏幕底色。之后再把三维物体按照MVP投射到屏幕,放到底色的上层,从而从图形上看,天空盒始终位于物体的最远处,看起来所有的图形都位于盒子的内部。(优化效率,可以先渲染物体,然后把未被遮挡的位置渲染天空盒,提高天空盒的渲染效率)

立方体纹理采样特点:立方体纹理相当于一个中心点为0,0,0的盒子,采样坐标从中心点0,0,0发出,发出的射线在立方体纹理上的对应点,作为找到的颜色点。

分析了天空盒之后,有点感受:
计算机所谓的三维场景,三维动画,三维视频,其实都是“假的”,都是通过算法手段,通过数学模型模拟出来的,计算出一帧一帧的平面图片,来模拟。计算机再高级的显卡也只是计算速度上,算法算的快一些,另外数学模型可以多放一些,算法高级一些,对三维算法的支持效率高一些,并没有银弹,没有天生就构建出的三维微型世界来映射现实世界,没有天生就支持的三维演算对应现实世界。
三维模拟的每一步,都是通过数学模型,通过算法,一点一点对应到现实空间上来,再对应输出形成屏幕上一帧一帧的图像。
有点失望,没有银弹,又有点觉得理所当然:伟大的背后皆是苦难!每一步背后都需要有着模型算法的支撑~

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

 

 

你可能感兴趣的:(OpenGL,OpenGL)