Android 用のパーティクル フィルタ アプリケーションを作成しています。すべてのパーティクルを GPU で並列処理したい。
現在の位置に基づいて各パーティクルまたは頂点の位置を更新するコードが頂点シェーダーにあるのですが、更新された位置を openGLES に書き戻す方法や、シェーダー処理で使用できるようにする方法さえわかりません。次の実行で同じ頂点。
属性変数には適切なスコープがありますが、頂点シェーダー内でのみ読み取られます。
ユニフォーム変数には適切なスコープがありますが、配列を使用することはできません (そのため、多数の頂点に対してユニフォームを実装するのは困難です)。また、それらは頂点シェーダー内でのみ読み取られます。
可変変数には変更を許可するスコープがありますが、それらはプログラム内のフラグメント シェーダーにのみ表示されます。フラグメント シェーダーが openGLES に情報を書き込める場合、これは機能する可能性があります。Fragment シェーダーは属性変数を変更できますか? (次回の実行のために)?
Fragment シェーダーが変数を更新する方法はありますか? {attribute、uniform、variing、default、other} それとも、ディスプレイではなくメモリにバッファを書き出すのでしょうか?