2013-01-17 76 views
6

私はAndroidアプリケーションの種類の指の塗料を開発しています。私はOpenGL ES 2.0を使用しています。基本的には、すべてのタッチスクリーンが、下に横たわる他の画像が表示されている場所に適用される円のアルファに対応する必要がある画像があります。私はさまざまな手法を試しましたが、レンダリング段階を遅くする有機的なglTexSubImage2Dを使用するように機能するため、むしろ遅いです。私はFBOの使い方を理解しようとしています.FFSOはオフスクリーンレンダリングを可能にするからです。誰かが、オフスクリーンでレンダリングすることと、自分の方法をスピードアップするために得られる利点をよりよく説明できますか?Android OpenGL FBOオフスクリーン

オフスクリーンは、私が作成したフレームバッファをonDrawFrameから外すことができると思いますか?別のスレッドですか?

答えて

0

あなたは、画面の一部を読み返して同じ量のデータをGPUのメモリに書き戻す必要があるため、多くのメモリ帯域幅を使います。これは実際には遅く、レンダリングする前にイメージがGPUに戻される前に描画コードを待機させます。各指のプレスや、あなたのニーズに近似した何らかのプリミティブを描くことを考えましたか?なぜこれのためにOpenGLが必要ですか?

1

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

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

私はこのことができます願っています。これを注意深く読んでください - 「OpenGL ESでオフスクリーンにレンダリングするにはまだpbuffersを使うことができます」

+0

しかし、私は2つのEGLコンテキストを切り替える必要があるため、pbufferのアプローチがAndroidでは遅いことに気付きました。代わりに、 "フレームバッファオブジェクト"をオフスクリーンバッファとして使用するstackoverflow回答を検索します。 – ToolmakerSteve

関連する問題