2010-11-29 13 views
2

私は配列から値を描画するためにOpenGLを使用します。値は3つのAndroidセンサーからのものです。私は値を収集している間、レンダラーを回したい。同時に描画と収集には差分があるようですので、センサ値を収集しながらレンダリングをオフにしたいと考えています。現時点では、描画を停止するためにondraw()でbooleanを使用します。しかし、これを行うよりよい方法はありますか?私が描くのをやめてしまうと、ちょっとジッタを拾うようなことが起こるかもしれませんが、描画がないのでできません(ondraw(){if(boolean){........ 。}} 時間のためにondraw()のOpenGLを停止する最善の方法

は、私が提案を持って

+1

「ジッタ」とはどういう意味ですか?フレーム間で前後に動きます...ちょっと "振動する"? –

答えて

5

GLSurfaceViewには、setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY)で尋ねられたときに描画するよう依頼することができます。描画する準備ができたら、requestRender()を呼び出します。

1

:-)あなたの助けのためにどうもありがとうございます:センサデータを収集するためのスレッドを作成し、オブジェクトとして、それを利用可能にします。このスレッドはすべてのデータを収集し、パブリック値オブジェクトで同期します。ブロッキング時間を最小限に抑えることができます。

collectLocalData = getData(); 
synchronized(pubData) { 
    pubData.set(collectLocalData); 
} 

ローカル消費用のパブリック値をコピーするときに、レンダリングスレッドは同じことができます。

センサーのポーリングにレンダリング時間よりも時間がかかる場合、同じデータが複数回レンダリングされます。アニメーションはちょっとしたものになるかもしれませんが、データが表現するものよりもそれほどです。

PS:ジッタは、コードではなくデータそのものの結果かもしれません。

関連する問題