遅延シェーディングを実装するために、fboを使用して複数のレンダーターゲットを実行しました。WebGL2デフォルトレンダーバッファエラーへの深さ値のコピー
このアプローチは機能しますが、背景に空の球を追加したいと思います。
明らかにこの空の球は、遅延レンダリングサイクルに属していないため、2番目のパスでレンダリングする必要があります。
しかし、空の球を正しくレンダリングするには、デプスレンダリングテクスチャが球をブロックしないように、デプス値を取得する必要があります。そうするには
、私はフレームバッファをデフォルトにGバッファから深度テクスチャをコピーします。
gl.bindFramebuffer(gl.READ_FRAMEBUFFER, gDeferredDrawer.FrameBuffer.Context);
gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);
gl.blitFramebuffer(0, 0, gl.viewportWidth, gl.viewportHeight, 0, 0, gl.viewportWidth, gl.viewportHeight, gl.DEPTH_BUFFER_BIT, gl.NEAREST);
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
このアプローチは動作しませんでした。
GLのERROR:GL_INVALID_OPERATION:glBlitFramebufferCHROMIUM:先のフレームバッファが
をマルチサンプリングされて、私は本当に私が間違ってそれをやったのか分からない私は、このエラーメッセージを与えるのWebGL。私が知る限り、インターネットには明確な例はありません。誰かが私を啓発してくれますか?ドローフレームバッファ用
フィードバックに感謝します。 追加のFBOを使用してそれを解決し、出力テクスチャとレンダリングバッファを遅延シェーダと共有します。これはかなりうまく機能します。 もう一度お返事いただきありがとうございます。 –