2017-02-15 5 views
1

私が作成したearlier postに記載されているテクニックをセットアップしようとしています。Three.js r84 - EffectComposer:WebGLRenderTarget.textureを再利用できません。

ShaderPassは、readBuffer内のテクスチャを使用して、tDiffuseユニフォームを塗りつぶします。 これはLine 49​​でご覧になれます。 その後ShaderPassに別のプロパティ、this.exportBufferが含まれるように変更しました。

this.exportBufferは、ライン61でレンダーするために使用されたreadBufferで埋められます。このプロパティは、renderer.render()が呼び出された後に塗りつぶされます。

次に、最後のShaderPassからexportBuffer.textureプロパティを抽出します。 私の理論では、エクスポートされたexportBuffer.texureは、最後のwriteBuffer内の画像を保持する必要があります。これは、最初のEffectComposerに表示される画像にする必要があります。

ただし、exportBuffer内のテクスチャは、私が試したことに関係なく黒く見えます。

この問題を解決するために提供できる情報やコードがもう残っている場合は、お知らせください。

よろしくお願いいたします。

答えて

1

私は、複数のwebglキャンバスが同じコンテキストを共有できないという制限があると言います(http://games.greggman.com/game/webgl-techniques-and-performance参照)。

同じレンダラーを使用して2つのEffectComposersを実行することをお勧めします。私が見るところでは、2番目のEffectComposerのレンダリングを開始する前に、 "scndMat"の "マップ"を正しい出力テクスチャにポイントするだけです。

+0

WebGLRenderTargetを特定のサイズで構成できるため、さまざまなサイズのWebGLRenderTargetインスタンスを異なるEffectComposersで使用できると仮定することは妥当と思われます。 1つは画像の特定のサイズに一致し、もう1つは画面上の最終出力に一致します。私はレンダラーのサイズを直接操作する必要はないと思っています。エフェクトコンポーザーがscenceの背後にあるかもしれませんが(私はそのコードを見ていませんでした)... – wothke

+0

あなたは歓迎です。作品 – wothke

関連する問題