将图像包裹在 glutWireSphere [重复]

Posted

技术标签:

【中文标题】将图像包裹在 glutWireSphere [重复]【英文标题】:Wrap an Image around glutWireSphere [duplicate] 【发布时间】:2015-12-08 00:57:29 【问题描述】:

我正在尝试在我的 OpenGL/C++ 程序中的 glutWireSphere 周围包裹一个图像。我正在制作一个太阳系,并且我有纹理图像,我想将它们包裹在我已经绘制的球体周围。我搜索了 Google 以尝试找出如何做到这一点,但我发现了过时的教程或对我需要的内容更复杂的教程(至少我认为)。

我尝试使用 SOIL,但实施起来并不顺利。我想知道这是否是做我想做的事情的最佳途径,还是我应该尝试另一种方法?

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

【问题讨论】:

你不能用 GLUT 的绘图函数(glutWireSphere 等)做很多事情——实际上它们只是为了测试 OpenGL 的工作原理。 【参考方案1】:

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

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

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

【讨论】:

以上是关于将图像包裹在 glutWireSphere [重复]的主要内容,如果未能解决你的问题,请参考以下文章

由容器包裹的响应方块网格[重复]

如何在屏幕边缘包裹blit?

如何使用包裹在反应中添加图像?

如何在球体周围“包裹”方形图像

如何在 ARkIt2 中将图像包裹在 3d 对象上?

用其他div包裹div中的图像