2012-01-22 12 views
0

実際に私はこの呼び方がわかりませんが、固定長の描画カーブ

私はこのような機能を実装したいと思います。そして、この線は例えば100ピクセルの長さ、もはや...この曲線の長さが100ピクセルより大きくなったとき、最後の(古い)ピクセルを隠す(消去する)必要があります。ピクセルは良いアイデアですので、私はあなたの助言が必要ですplz

+0

あなたはどの言語/プラットフォームで作業していますか? –

+0

アンドロイドとiOSの両方... OpenGL – davs

+0

が質問タグを更新したとします。質問に正しい眼球を得るのに役立ちます。 –

答えて

1

OpenGLESはglBegin/Endをサポートしていないため、配列以外のオプションはありません。 100pxがあまりにも多く割り当てられていないので、リンクリスト構造を使用してピクセルデータを保存し、更新が発生するたびにOpenglバッファを再構築します(入力イベント)。

リンクされたリストの代わりに、私はstartとendのインデックスを保持して配列を使って、それらを循環させることで、arrayを使うことを提案できます。しかし分数ポイントに注意する必要があります。擬似コードは次のようになります。

public void addVertice(float x,float y){ 
    { 
     if(curveLength<MAX_CURVE_SIZE) 
     { 
      ar[end][0]=x; 
      ar[end][1]=y; 
      end++; 
      curveLength++; 
     } 
     else{ 
      ar[end][0]=x; 
      ar[end][1]=y; 
      end=1+(end+1)%(MAX_CURVE_SIZE-1);// cycle, but never left only one element in array 
      start=1+(start+1)%(MAX_CURVE_SIZE-1); 
      ar[MAX_CURVE_SIZE][0]=ar[1][0]; 
      ar[MAX_CURVE_SIZE][1]=ar[1][0]; 
      ar[0][0]=ar[MAX_CURVE_SIZE-1][0]; 
      ar[0][1]=ar[MAX_CURVE_SIZE-1][0]; 


     } 
     updateBuffers(); 
    } 

バッファーを描画するには、2つのサイズ指定を処理する必要があります。 startendより小さい場合、開始点を最後まで描画します。 startendより大きい場合は、startMAX_CURVE_LENGTHと0〜endを入力する必要があります。どちらの場合も、同じインデックスバッファを使用できます。

関連する問題