私はいくつかのアプリケーションの基礎として小さなライブラリを開発しています。私はシーングラフ(2D)を作成しようとしていますように私は疑問に思って、パフォーマンスの観点の下で、より有望に見える以下のアプローチのこれ、保守性、使いやすいなどキャンバス操作と要素操作
- 私は、各描画可能な要素にどこ行列を与えることができます私は翻訳、回転などを行います。
- 私は要素の代わりにキャンバス上ですべてを行うことができました。
最初の解決策には欠点がある:
private float get(int index) {
final float[] values = new float[9];
getValues(values);
return values[index];
}
public float getX() {
return get(Matrix.MTRANS_X);
}
public float getY() {
return get(Matrix.MTRANS_Y);
}
:私はドローコールに行列を渡すことはできません円、のような原始的な要素のために、私はこのようなマトリックスから翻訳された値にアクセスする必要があります
私は描画呼び出しごとにgetter()用に1つ、getY()用に1つ、getter呼び出しごとにfloat配列を作成します。画面上にたくさんの要素があると仮定すると、これはメモリとパフォーマンスに影響を与える可能性があります。
第2のアプローチには、「否定的な」考え方の欠点があります。 100/100の点で要素を描きたい場合は、キャンバスを-100/-100に変換して、0/0に描画する必要があります。それ以降キャンバスを復元すると、結果は必要な100/100に描画されます。この否定的な考えがコードの保守性や理解の低下に深刻な影響を与えるかどうかはわかりません(何かを否定することを単に忘れることによってバグを導入することについて考えることさえありませんでした...)。
誰かが好きな方法でチップを持っていますか?
私の研究結果を掲載しました。私は本当にあなたの答えから何か新しいものを得ることができませんでしたが、私はあなたの努力のためにあなたをアップフォートします。 – WarrenFaith