2012-03-21 14 views
7

ビットマップに(OpenGLを使用して)いくつかのピクセルシェーダーを適用し、結果をサーバーに送信する必要があります。レンダリングはバックグラウンドで行われるはずですから、この目的でGLSurfaceViewを作成することはできません。だから私の質問です:GLSurfaceViewを使用せずにAndroid上でOpenGLレンダリングを行うことは可能ですか?ビットマップ、キャンバス、またはある種のバッファ/配列に直接描画するのと同じですか?または、ある種のダミーGLSurfaceViewを使用することが可能ですか?OpenGlをビットマップに直接描画する(表示なし)

+0

[アプリのレンダリングリソースとしてバックグラウンドでAndroid OpenGLを実行しますか?](http://stackoverflow.com/questions/6524212/run-android-opengl-in-background-as-rendering-resource-for-アプリ) –

答えて

4

This SO postan anddev postへのリンクが含まれているため、サンプルを持っています。少し下に、PixelBufferクラスを作成して、GLSurfaceView.Rendererインターフェイスを再利用するクラスですが、それ以外はEGLだけです。

+0

幸いにも私は同じアイデアに基づいて自分のレンダラを完成させました。答えとリンクの考えてくれてありがとう。それは他の人には役に立ちます。 –

+0

上記のPixelBufferオブジェクトには優れた概念証明が含まれていますが、パフォーマンス上の重大な問題があります。バッファがレンダリングされると、ループ内の各ピクセルをコピーして100%以上ランタイムの増加!ちょうど、OGLでリファレンスフレームを真っ直ぐに保つことが重要であることを示しています。 – tomwhipple

+1

また、PixelBufferは一部の電話機では動作しますが、他の電話機では動作しません。はい、断片化! – tomwhipple

0

フレームバッファオブジェクトにレンダリングしたい(つまり、テクスチャに直接描画する)ように思えます。これは間違いなく可能です。ここやウェブ上で答えを探してみてください。私はあまりにも苦労せずにこれを見つけました。 GL ES 1.1または2.0を使用しているかどうかはわかりません。また、SDKでAPIDemosように見える

http://blog.shayanjaved.com/2011/05/13/android-opengl-es-2-0-render-to-texture/

は1.1

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/FrameBufferObjectActivity.html

+0

答えていただきありがとうございます。私が見ることができるように、両方のメソッドはGLSurfaceViewに依存します。スクリーン/アクティビティ/レイアウトなしでレンダリングする必要があります。私はいくつかのバックグラウンドスレッドを意味します。私は、GLSurfaceViewがGLのコンテキストを作成することができないのだろうかと思っています(描画する画面が必要です)。とにかくこれは役に立つと思われるヒントありがとうございます。 –

+0

@boulder GLSurfaceViewが画面外の場合は初期化されませんか? 1pxで画面に表示されたらどうなりますか? –

+0

@BradMoore私は今覚えていません。これはあなた自身で簡単に確認できます。私が知る限り、画面なしでGLSurfaceViewを使用することはできません。 1pxはオプションではありませんでした。 –

関連する問題