在glutWireSphere周围包裹图像

时间:2015-12-08 00:57:29

标签: c++ opengl

我试图在我的OpenGL / C ++程序中包含我的glutWireSphere图像。我正在制作一个太阳系,我有纹理图像,我想围绕我已绘制的球体。我搜索谷歌试图找出如何做到这一点,但我发现过时的教程或教程对我需要的东西要复杂得多(至少我认为)。

我尝试使用SOIL,但没有太多运气实现它。我想知道这是否是最好的方式去做我想要的,或者我应该尝试另一种方法?

在这里寻找一些方向,谢谢。

1 个答案:

答案 0 :(得分:0)

glutSolidSphere的规范不会要求为生成的顶点生成纹理坐标。因此,需要一些箍跳才能在球体上获得纹理图像。

纹理球体的常用方法是使用2D纹理,其中行和列映射到经度和纬度。这会在极点引起一些奇怪的失真,但在该区域看起来并不是很好(这是由于数学定理,它至少需要2个地图来覆盖球体而不会引入这种退化)。

另一种方法(很适合glutSolidSphere)是应用立方体贴图纹理并将球体顶点位置重新用作纹理坐标。这就是我的建议:使用SOIL加载立方体贴图纹理的六个边并配置纹理坐标生成以将顶点位置用作纹理坐标。最容易在顶点着色器中完成(简单地将顶点位置作为变量传递给它用于纹理查找的片段着色器),但也可以使用旧的固定功能管道来实现。