5

iPhone の OpenGL ES で反射をレンダリングするための代替手法を探しています。通常、ステンシル バッファーを使用して反射が見える場所 (反射面) をマークし、それらのピクセルでのみ反転した画像をレンダリングします。したがって、反射したオブジェクトがサーフェスから離れると、その反射は見えなくなります。ただし、iPhone の実装ではステンシル バッファーがサポートされていないため、サーフェスの外側にある反射部分を非表示にする方法を判断できません。

明確にするために、問題は反射自体をレンダリングすることではなく、表示されないときにそれらを非表示にすることです。

何か案は?

4

2 に答える 2

9

最初に反射シーンをレンダリングします。を使用してテクスチャにコピーしglCopyTexImage2Dます。フレームバッファをクリアします。シーンを適切に描画し、コピーしたテクスチャを反射面に適用します。

于 2009-02-27T00:26:00.810 に答える
2

反射に対する答えはありませんが、ステンシル バッファーを使用せずにシャドウを作成する方法を次に示します。おそらく、アイデアが得られるでしょう。

光源の観点からメッシュの基本的な表裏判定を行います。次に、前面の三角形を背面の三角形に接続するすべてのエッジのリストを取得します。このエッジ リストを線の「ループ」として扱います。オブジェクト光線が地面と交差するまで、このループの頂点をオブジェクト光線に沿って投影します。次に、これらの交点を使用して、地面と同じ平面上の 2D ポリゴンを計算します。次に、テッセレーション アルゴリズムを使用して、そのポリゴンを三角形に変換します。(これは、光源またはオブジェクトがあまり頻繁に移動しない限り、うまく機能します。)

三角形を作成したら、深度バッファーが影を通過できるように、わずかにオフセットしてレンダリングします。または、 Red Book にあるようなデカール アルゴリズムを使用することもできます。

于 2009-02-27T00:17:43.247 に答える