2012-02-14 10 views
1

webGLシェーダでレンダリングをしたいが、前のフレームからシェーダによって生成されたデータの配列を読み込む必要がある。シェーダを使ってテクスチャに書き込み、そのテクスチャを同じシェーダで読み込むことでこれを行います。ただし、これは機能しません。シェーダは最後のフレームからテクスチャを読み込み、フレームバッファに完全に書き込むことができますが、テクスチャに再び書き込むことはできません。私はまた、他のイメージ単位にテクスチャをコピーしようとしましたが、どちらも機能しません。同じシェーダで読み書きができないwebGLのテクスチャに制限があるのでしょうか?または私は何か間違ったことをした? http://www.opengl.org/wiki/GLSL_:_common_mistakesにおける共通の過ちから事前にWebGLテクスチャ同時に読み書きする

おかげで、 李

答えて

5

: は「通常は、テクスチャをサンプリングすると同時に、その同じテクスチャにレンダリングするべきではありません。これは、あなたに未定義の動作を与えることがあります。。いくつかのGPUといくつかのドライババージョンでは動作しますが、他のバージョンでは動作しません。ピンポン・アプローチを用いて

使用代わりに2つのテクスチャ(以下のチュートリアルは、OpenGLが、まっすぐであるべきであるWebGLのに技術を使用して)応答を

http://www.mathematik.tu-dortmund.de/~goeddeke/gpgpu/oldstuff/HelloPingPong.pdf

+0

おかげ。 webGLが異なる色のバッファをサポートしているのだろうかと思います。しかし、glBindTextureを使って、2つの画像単位にテクスチャをコピーしようとしました。シェーダは1つのユニットからテクスチャを読み込み、もう1つのユニットにテクスチャを書き出しますが、動作しませんでした。これが実行可能かどうか誰もが知っていますか? –

+1

いいえ、実行できません。ピンポンアプローチを使用する必要があります。 Hreは、http://webglsamples.googlecode.com/hg/persistence/persistence.htmlに書き込んだテクスチャから読み込んだサンプルです。こちらのビデオはこちらhttp://www.youtube.com/watch?v= rfQ8rKGTVlg#t = 31m42s – gman

関連する問題