巨大なデータセットのグラフを生成します。1 秒あたり 4096 サンプル、1 グラフあたり 10 分です。簡単な計算では、折れ線グラフあたり 4096 * 60 * 10 = 2457600 サンプルになります。各サンプルは倍精度 (8 バイト) の FP です。さらに、1 つの画面に最大 100 程度の複数の折れ線グラフをレンダリングします。これにより、1 つの画面で約 25M のサンプルをレンダリングできます。常識と簡単なトリックを使用して、2D キャンバスにこれを描画する CPU を使用して、このコードのパフォーマンスを向上させることができます。高性能、つまり、レンダリング時間が 1 分未満になります。これは科学的なデータであるため、サンプルを省略することはできません。真剣に、これはオプションではありません。それについて考え始めることさえしないでください。
当然のことながら、利用可能なすべての手法を使用してレンダリング時間を改善したいと考えています。マルチコア、プリレンダリング、キャッシングはすべて非常に興味深いものですが、それをカットすることはできません。これらのデータセットでは、最低でも 30 FPS のレンダリングが必要であり、60 FPS が推奨されます。これは野心的な目標です。
グラフィックス レンダリングをオフロードする自然な方法は、システムの GPU を使用することです。GPU は、巨大なデータセットを処理し、それらを並列処理するように作られています。GPU を使用したいくつかの単純な HelloWorld テストでは、レンダリング速度の昼と夜の違いが示されました。
問題は、OpenGL、DirectX、XNA などの GPU API が 3D シーンを念頭に置いて作成されていることです。したがって、それらを使用して 2D 線グラフをレンダリングすることは可能ですが、理想的ではありません。私たちが開発した概念実証では、2D の世界を 3D の世界に変換する必要があることがわかりました。突然、ポリゴン、頂点などの XYZ 座標系を使用する必要が生じました。これは、開発の観点からは理想とはほど遠いものです。コードが読めなくなり、メンテナンスが困難になり、さらに多くの問題が発生します。
3D でのこれに対する提案やアイデアは何ですか? 2 つのシステム (2D 座標と 3D 座標とエンティティ) を実際に変換する唯一の方法はありますか? または、これを達成するためのより洗練された方法はありますか?
-1 つのピクセルで複数のサンプルをレンダリングすると便利なのはなぜですか? データセットをよりよく表しているためです。1 つのピクセルについて、値 2、5、および 8 があるとします。一部のサンプル省略アルゴリズムにより、5 のみが描画されます。線は 5 にのみ移動し、8 には移動しないため、データが歪んでいます。反対のことを主張することもできますが、問題は、最初の引数が使用するデータセットに関係するということです。これこそが、サンプルを省略できない理由です。