gpt4 book ai didi

c++ - 球体的 OpenGL UV 贴图(有接缝)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:51 34 4
gpt4 key购买 nike

尝试将 UV 坐标映射到球体时遇到以下问题 enter image description here

这是我用来获取 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 贴图(有接缝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20155278/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com