c – 球体的OpenGL UV贴图(有缝)

c – 球体的OpenGL UV贴图(有缝),第1张

概述尝试将UV坐标映射到球体时,我遇到以下问题 这是我用来获取UV坐标的代码 glm::vec2 calcUV( glm::vec3 p){ p = glm::normalize(p); const float PI = 3.1415926f; float u = ((glm::atan(p.x, p.z) / PI) + 1.0f) * 0.5f; float 尝试将UV坐标映射到球体时,我遇到以下问题

这是我用来获取UV坐标的代码

glm::vec2 calcUV( glm::vec3 p){    p = glm::normalize(p);    const float PI = 3.1415926f;    float u = ((glm::atan(p.x,p.z) / PI) + 1.0f) * 0.5f;    float v = (asin(p.y) / PI) + 0.5f;    return glm::vec2(u,v);}

这个问题在stackoverflow question很好地解释了,但是,我仍然没有得到如何解决它.从我读过的内容来看,我必须创建一对重复的顶点.有谁知道一些好的和有效的方式吗?

解决方法 你遇到的问题是,在接缝处你的纹理坐标“滚动”回到0,所以你得到整个纹理映射,镜像到接缝上.为了避免这种情况,您应该使用GL_WRAP重复模式,并在接缝处使用纹理坐标为> = 1的顶点(不要回滚到0).请记住,顶点由其所有属性的整个元组组成,并且具有不同属性值的顶点在整体上是不同的,因此尝试“共享”顶点没有意义. 总结

以上是内存溢出为你收集整理的c – 球体的OpenGL UV贴图(有缝)全部内容,希望文章能够帮你解决c – 球体的OpenGL UV贴图(有缝)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1244712.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存