レンダリングされた背景画像とプリセットの深度情報を使用してシーン内の他のオブジェクトを遮る、昔ながらの手法を実装しようとしています。
たとえば、前景の天井からぶら下がっているワイヤーがある部屋の写真がある場合、これらには深度マップで浅い深度値が与えられ、正しくレンダリングされると、キャラクターはワイヤーの「後ろ」を歩くことができますが、部屋の他のオブジェクトの前。
これまでのところ、以下を使用して深度テクスチャを作成しようとしました:
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, Image.GetWidth(), Image.GetHeight(), 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, pixels);
次に、それをクワッドにバインドして画面上にレンダリングするだけですが、テクスチャから深度値を書き込みません。
私も試しました:
glDrawPixels(Image.GetWidth(), Image.GetHeight(), GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, pixels);
しかし、これによりフレームレートが約 0.25 fps に低下します...
gl_fragDepth をテクスチャの値に設定することでピクセルシェーダーでこれを実行できることは知っていますが、ピクセルシェーダーが有効でないハードウェアでこれを達成できるかどうか知りたいですか?