7

Androidアプリタイプのフィンガーペイントを開発しています。OpenGL ES 2.0 を使用しています。基本的に、すべてのタッチスクリーンが円アルファに対応し、その下にある他の画像が表示される場所に適用される画像があります。さまざまな手法を試しましたが、レンダリング段階を遅くする有機的な glTexSubImage2D を使用するように機能するため、かなり遅くなります。オフスクリーン レンダリングを許可する FBO の使用を理解しようとしています。画面外でレンダリングすることの意味と、私の方法を高速化するために得られる利点を誰かがよりよく説明できますか?

オフスクリーンとは、onDrawFrame の邪魔にならないように、私が作成したフレームバッファを変更できることを意味すると思いますか? 別のスレッドで?

4

2 に答える 2

2

OpenGL ES 2.0 を使用して画面上のウィンドウにレンダリングできることに加えて、pbuffer (ピクセル バッファーの略) と呼ばれる非表示のオフスクリーン サーフェスにレンダリングすることもできます。pbuffers は、ウィンドウと同様に、OpenGL ES 2.0 で利用可能なハードウェア アクセラレーションを最大限に活用できます。Pbuffers は、テクスチャ マップの生成に最もよく使用されます。テクスチャにレンダリングするだけの場合は、より効率的な pbuffer の代わりにフレームバッファ オブジェクト (第 12 章「フレームバッファ オブジェクト」で説明) を使用することをお勧めします。ただし、pbuffers は、OpenGL ES でオフスクリーン サーフェスをレンダリングし、それを OpenVG などの別の API でテクスチャとして使用する場合など、フレームバッファ オブジェクトを使用できない場合にも役立ちます。

[ソース: OpenGL ES 2.0 プログラミング ガイド]

これが役立つことを願っています。これを注意深く読んでください - 「pbuffers は、OpenGL ES を使用してオフスクリーン サーフェスにレンダリングする場合にも役立ちます」

于 2013-01-20T13:27:42.590 に答える
0

画面 (の一部) を読み戻し、同じ量のデータを GPU メモリに書き戻す必要があるため、アプローチは多くのメモリ帯域幅に取って代わります。これは非常に遅く、レンダリング前に画像が GPU に戻される前に描画コードを待機させます。指を押すごとにクワッドを描画すること、またはニーズに近い何らかのプリミティブを描画することを検討しましたか? なぜこれに OpenGL が必要なのですか?

于 2013-01-17T17:06:50.170 に答える