我正在OpenGL应用程序中实现Skybox。
使用像http://code.google.com/p/xeger/wiki/XegerLimitations这样的单一纹理更常见,并使用UV贴图拉出六边。
或者使用one网站提供的内容为六边中的每一面使用一个纹理更为常见。
使用一个纹理对我来说的好处是可以通过不使用不必要的纹理单元来节省开销。但是,这里的牺牲显然是图像分辨率。如果您使用单个2048x2048纹理,则天空盒的每一侧只能使用512x512像素。每侧的一个纹理使可用像素增加四倍......
有什么见解?
答案 0 :(得分:0)
使用像这样的单个纹理并使用UV更常见 映射以拉出六个方面
建议使用单个纹理,因为它会减少状态切换的数量,因此在大多数情况下会产生更好的性能。在一个大纹理中组合多个纹理称为'纹理图集' https://en.wikipedia.org/wiki/Texture_atlas用于许多应用程序,以减少单独纹理的数量。
如果使用单个2048x2048纹理显示天空盒的每一侧 只有512x512像素才能使用。每一面都有一个纹理 使可用像素增加四倍....
这不是真正的争论,因为你可以在一个大纹理中组合六个2048x2048纹理。
我个人对环境地图的建议(天空盒也是环境地图),是使用立方体地图https://www.opengl.org/wiki/Cubemap_Texture。使用立方体贴图,您可以结合两种优势(只有一个纹理绑定+简单的纹理坐标)和立方体贴图具有更多用法,例如简单的反射。