1

現在、スカイドームをレンダリングしようとしています。球は gluSphere を使用して作成され、頂点シェーダー内で各頂点から球座標を抽出します。次に、通常のテクスチャ座標と同様に、球座標の theta と phi の両方を範囲 [0,1] にマップします。現在、フラグメント シェーダーは phi のみを考慮します。

ご覧のとおり、勾配が 2 回表示され、pi 回転後に phi がリセットされることを意味するため、phi は正しくマッピングされていないようです。

VS でシータとファイを次のように計算します。

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);

問題の画像

4

2 に答える 2

1

gluSphere を使用して作成された球にテクスチャをマップする場合は、球座標を生成する必要がなく、gluQuadricTexture を使用してテクスチャをマップできます。サンプルプログラムはこちらでご覧いただけます

于 2013-02-05T03:46:36.933 に答える
1

気にしないで、本質的にatan2であるatan(float x、float y)の代わりに、atan(float x)を使用していました。

于 2013-02-04T18:38:44.730 に答える