在实现着色器立方体贴图之前,我尝试手动制作一个天空盒,周围有六个纹理,但旋转时会出现扭曲现象。
在GL 3.3中使用立方体贴图制服,幕后是否有一些额外的数学魔法(抵消失真),而不是创建六个平面并手动将纹理应用于每一面?
答案 0 :(得分:0)
当然,立方体贴图只能用90°fov创建(至少如果相机位于立方体的中心)。否则,你不会得到一个立方体。如果减小fov,边缘周围会出现空白区域。如果增加它,您将获得重叠区域。你也可以用非90°fovs创建一个长方体,但这不值得努力。
OpenGL中立方体贴图的寻址模式与普通2D贴图所使用的不同。您可以使用2D纹理坐标访问2D纹理。通过3D方向向量访问立方体贴图。然后,OpenGL使用此方向向量来计算要使用的子纹理和此子纹理的纹理坐标。
使用六个普通纹理也可以轻松实现天空盒。实际上,在这种情况下,高级寻址模式甚至可能变成缺点。如果您使用不同的天空载体对象(例如我曾经使用过sky tetrahedron),情况会有所不同。如果存在扭曲,那么代码中肯定会出现一些错误。基本原则有效。
答案 1 :(得分:0)