UDPソケット上で4次元の点データを取得し、6つの別々の2D散布図にプロットするプログラムをC++で作成しています。たとえば、A、B、C、Dの名前を付けると、AxB、AxC、AxD、BxC、BxD、CxDの6つの2次元プロットが作成されます。数時間かけて、プログラムは〜50Kポイントを獲得します。OpenGLを使用してC++で多くのデータポイントを持つ散布図を描画する最良の方法
現在、イミディエイトモードを使用して各ポイントを1回プロットします。描画呼び出しの間にバッファをクリアしないので、以前にプロットされた点は、バッファがクリアされるまで存続します。私は即時モードが遅く、廃止予定であるため、この方法に満足していません。ウィンドウをサイズ変更するときと同じように、バッファをクリアする必要があるとき、以前にプロットされたすべてのデータが失われます。私は、バッファがクリアされた後にデータの永続化を可能にするソリューションを考え出したいと思います。さらに、プロットがウィンドウのサイズ変更も容易に行えればいいと思う。
私は各座標系の頂点配列(2次元で)を維持することを考えましたが、それは6個の別個の配列を必要とし、4次元すべての配列を維持するために3倍のメモリが必要です。
私は正しい方法でこれについて考えていますか?この問題の適切な解決策は何ですか?
最後の目標は、できるだけリアルタイムでデータを表示するアプリケーションを作成することです。
は編集彼らが来るように、1つずつポイントをプロット継続することが可能であろう、と私はサイズを変更する必要があるときに、画面は、画面の画像を取得し、その画像のサイズ変更されたバージョンを表示しますか?
VBOは少なくともクライアント側の配列より遅くならず、確実に即時モードより高速です。メモリコピーだけでなく、VBO(および頂点配列一般)が必要とするドライバコールオーバーヘッドもあります。 –
異なるビューに対して異なる頂点シェーダを持つ必要はなく、 'glVertexPointer'の' stride'引数と 'pointer'引数を変更することで、おそらくなくなります。 – user786653
@Christianコメントありがとうございます、私はそれについては分かりませんでした。 – neodelphi