WebGLには長いシェイプパイプラインがあり、各シェーダは入力テクスチャから読み込み、別のテクスチャにレンダリングし、最後に最後のテクスチャには望ましい結果が含まれています。レンダリング中にWebGLのテクスチャを再利用する
パイプラインのテクスチャをと同じように再利用できますか?同期して実行していたかのようにしますか?
// ... init texA to contain input ...
shader1.samplingFrom(texA).renderTo(texB);
shader2.samplingFrom(texB).renderTo(texA);
shader3.samplingFrom(texA).renderTo(texB);
return readPixels(texB); // Always the same answer?
この点については、次のステージが始まる前にシェーダ仕上げに頼ることができますか?
// ... init texA to contain input ...
shader1.samplingFrom(texA).renderTo(texB);
shader2.samplingFrom(texB).renderTo(texC);
shader3.samplingFrom(texC).renderTo(texD);
return readPixels(texD); // Always the same answer?
私が最初に私はテクスチャを再利用することができると思ったが、私はパイプラインをストール場合、私は(いくつかの種類の競合状態を意味している)消える奇妙な行動に気づいてきたので、今、私は保証が何であるかわからないんだけど提供されます。
私が見ていたバグは、まだレンダリングされていないテクスチャからのレンダリングによるものでした。なぜそれがそれをしたのかはわかりませんが、並行性の問題ではありませんでした。しかし、この質問に対する答えを知ることにはまだ関心があります。 –