【发布时间】: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);
【问题讨论】:
-
我不明白你想做什么。您想在球体或其他物体上映射纹理吗?