2

2 つの FBO オフスクリーンを描画します。今度は、デプスバッファの値に応じてそれらをオーバーレイしたいと思います。これどうやってするの?

解決策を見つけました。最初に、FBO にアタッチされたテクスチャで深度バッファをレンダリングします。次に、それを fragmentshader にロードして、2 つの deptbuffer を比較します。私のフラグメントシェーダーはこんな感じです。

precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D s_texture1;
uniform sampler2D s_texture2;
uniform sampler2D s_depth1;
uniform sampler2D s_depth2;
void main(){
  vec4 tex1;
  vec4 tex2;
  vec4 depth1;
  vec4 depth2;

  depth1 = texture2D( s_depth1, v_texCoord);
  depth2 = texture2D( s_depth2, v_texCoord);

  tex1 = texture2D( s_texture1, v_texCoord );
  tex2 = texture2D( s_texture2, v_texCoord );
  if ( depth1.r < depth2.r ){
      gl_FragColor = tex1;
  }else{
      gl_FragColor = tex2;
  }
}

しかし、これはそれほど高性能ではないようです。

FBO でアタッチされたレンダーバッファーを使用し、現在のようにフラグメントシェーダーでレンダーバッファーのデータにアクセスすることは可能ですか? これによりパフォーマンスが向上しますか?

どうもありがとうございました。

ラガードマット。

4

0 に答える 0