【问题标题】:Creating correct texture coordinates for a sphere in opengl在opengl中为球体创建正确的纹理坐标
【发布时间】:2013-01-19 12:47:16
【问题描述】:

我目前正在尝试渲染天空穹顶。球体是使用 gluSphere 创建的,在顶点着色器中,我从每个顶点提取球坐标。然后我将球体坐标 theta 和 phi 映射到范围 [0,1],就像正常的纹理坐标一样。目前,片段着色器只考虑 phi。

如您所见,phi 似乎没有正确映射,因为梯度出现了两次,这意味着 phi 在 pi 旋转后被重置。

我在 VS 中这样计算 theta 和 phi:

theta = acos(gl_Vertex.y/radius)/(pi);
phi = (atan(gl_Vertex.x/gl_Vertex.z)+pi)/(2*pi);

FS中的颜色很简单:

gl_FragData[0].rgb = vec3(phi, phi, phi);

【问题讨论】:

  • 我不明白你想做什么。您想在球体或其他物体上映射纹理吗?

标签: opengl textures


【解决方案1】:

没关系,我使用的是 atan(float x),而不是本质上是 atan2 的 atan(float x, float y)。

【讨论】:

  • 您是用户自己给出答案或者您想发表评论。
【解决方案2】:

如果您想在使用 gluSphere 创建的球体上映射纹理,则无需生成球坐标,您可以使用 gluQuadricTexture 在其上映射纹理。您可以查看示例示例程序here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多