パフォーマンスに関しては、プロファイリングなしではわかりません。
あなたのターゲット電話でハードウェアアクセラレーションが行われている可能性があります。また、各フレームのライン描画プリミティブを使用してゼロからグラフを描画する必要があります。一方
、画像バッファの直接的な画素の操作は次のようになります
する適切なサイズの画像を作成し、「background_color
」にそれをオフにします。この画像にはsetpixel()機能が必要です。
各x時間のyを記録する値の配列を持っているので、どの列でも最後にグラフをプロットした場所を知ることができます。
"chart_image
"と "chart_array
"を循環バッファとして扱います。各タイムステップごとに:
Y = ...;
X = time_since_start % chart_width;
chart_image.setpixel(X,chart_array[X],background_color); // clear previous line
chart_array[X] = Y;
chart_image.setpixel(X,chart_array[X],foreground_color); // draw new plot
そして、あなたはそれをblitする必要があります。あなたではなく、個々のピクセルよりもラインを使用したい場合は
X = time_since_start % chart_width;
// the newest data is on the left of the chart_image but gets drawn on the right side of the output
blit(out_x+X,out_y, // destination coordinates
chart_image,
0,0, // top left of part of chart_image to blit
X,chart_height); // bottom right of chart_image part
// the oldest data is on the right of the chart_image but gets drawn on the left side of the output
blit(out_x,out_y,
chart_image,
X,0,
chart_width,chart_height);
物事をよりトリッキー取得し、代わりにsetpixel()
のdrawline()
もこのアプローチでその仕事をすることができます:あなたは二度画像をブリットする必要があります。
(Android APIを知らないことに対する謝罪ですが、そのアプローチは一般的です。)
私はBitmap、getPixels、setPixelsを使用して、考えられるアプローチがあると思います。これが悪いアプローチであるかどうかはわかりませんが、私はそれに挑戦しています。お知らせ下さい! –