0

テクスチャからパーツを変更する必要がありますが、単に置き換えるのではなく、現在のテクスチャ データを認識する必要があります。

を使用しようとしましglTexSubImage2Dたが、現在のデータと新しいデータの間で何らかの操作を指定する可能性を与えずに、現在のデータを置き換えます。

1 つの解決策は、テクスチャ データをメモリにキャッシュし、使用する前にブレンド操作を実行して結果glTexSubImage2Dを使用glTexSubImage2Dすることですが、これはメモリを浪費するだけです...

これを可能にするデスクトップ OpenGL と OpenGL ES 2.0 の両方に共通の機能はありますか?

4

1 に答える 1

2

もちろんglTexSubImage2D、以前のデータはすべて上書きされ、CPU でそれを行うことはまったくオプションではありません (メモリを浪費するだけでなく、さらに重要なことに、時間を無駄にします)。

ただし、フレームバッファ オブジェクト (FBO)を使用することはできます。デスティネーション テクスチャを FBO のカラー レンダー ターゲットとしてアタッチし、テクスチャ クワッドをレンダリングして、その上に新しいデータをレンダリングします。サブ領域は、ビューポート設定または四角形のサイズと位置によって調整できます。実際の操作では、必要に応じて既存の OpenGL ブレンディング機能を使用するか、カスタム フラグメント シェーダーを使用できます (ただし、この場合、古いデータの上に新しいデータをレンダリングするだけではなく、新しいデータと古いデータの両方をテクスチャとしてレンダリングし、それらを完全に新しいテクスチャにレンダリングします。そうしないと、シェーダー内の古いデータにアクセスできないためです)。

于 2013-06-06T15:22:56.443 に答える