2

散布図を描画するために、(パフォーマンス上の理由から) OpenGL を試しています。二次元と三次元の両方に興味があります。

たとえば、さまざまなグループを表示するために、マーカーのスタイル設定にはどのようなオプションがありますか?

もちろん、色を変えることもできます。しかし、「従来の」散布図では、円、プラス、X、ボックスなども使用します。OpenGL 散布図でこれらを実現するにはどうすればよいですか?

必要な 2D マーカーを小さなテクスチャにレンダリングしてから、各マーカーのテクスチャで 1 つの三角形を描画する必要がありますか? テクスチャをアルファのみに使用し、ダイナミック カラーを使用することはできますか? (たとえば、テクスチャ = クラス、色 = その他のスコアにする)?

通常のプロット ライブラリ (gnuplot など) にはない、OpenGL でマーカーをスタイル設定する特別な方法はありますか?

パフォーマンスのヒントはありますか?リストまたは頂点バッファーを表示しますか?

4

2 に答える 2

4

それはたくさんの質問です。1つずつ取り組みましょう。

たとえば、さまざまなグループを表示するために、マーカーのスタイル設定にはどのようなオプションがありますか?

色、形、サイズ、さらにはアニメーション。

もちろん、色を変えることもできます。しかし、「従来の」散布図では、円、プラス、X、ボックスなども使用します。OpenGL 散布図でこれらを実現するにはどうすればよいですか?

ビルボード スプライト (チュートリアル)。アイデアは、常にカメラの方を向くように小さなクワッドを描画することです。この回転は CPU で実行できますが、カメラが移動し、フレームごとに再計算する必要がある場合は、頂点シェーダーで実行する方が高速である可能性があります。

必要な 2D マーカーを小さなテクスチャにレンダリングしてから、各マーカーのテクスチャで 1 つの三角形を描画する必要がありますか?

2 つの三角形 (つまり、正方形) が通常のアプローチです。これは、正方形の方がテクスチャを作成しやすいためです。

テクスチャをアルファのみに使用し、ダイナミック カラーを使用することはできますか? (たとえば、テクスチャ = クラス、色 = その他のスコアにする)?

はい。固定パイプラインを使用すると、テクスチャは現在の色によって変調されます。つまり、テクスチャにアルファ付きの白いマーカーがあり、現在の色を赤に設定すると、赤いマーカーが表示されます。シェーダーを使用している場合は、フラグメント シェーダーでこれを行う必要があります。

通常のプロット ライブラリ (gnuplot など) にはない、OpenGL でマーカーをスタイル設定する特別な方法はありますか?

私が言ったように:アニメーション。マーカーを回転させたり、上下に動かしたり、さまざまな速度でランダムに小刻みに動かしたりできます。以前、パケット損失を示すためにコンピュータ アイコンから水が滴り落ち、CPU の過熱を示すために煙と火が出てくるコンピュータ ネットワーク視覚化システムについて聞いたことがあります。限界はあなたの想像力です!

パフォーマンスのヒントはありますか?リストまたは頂点バッファーを表示しますか?

頂点バッファー。おそらくシェーダー。ただし、データ セットのサイズと OpenGL の使用経験によっては、どちらも使用しなくても済む場合があります。

最初に最も単純なことを試し、それが遅すぎる場合は、ボトルネックをより高速な実装に置き換えます。すべてを一度にやろうとしないでください。1 つのことを機能させてから、段階的に追加し、一度に 1 つのステップを改善します。

于 2012-10-20T10:07:11.713 に答える
1

OpenGL は、グラフィック プリミティブとして提供するものは非常に基本的です。点、線、または三角形よりも複雑なものはすべて、テクスチャの有無にかかわらず、ユーザーが実装する必要があります。

最善の方法は、マーカーの位置に小さなクワッドを描くことだと思います。インスタンス化された描画とシェーダーを使用すると、これを非常に効率的に行うことができます。アイデアを得るために、最新のパーティクル システム レンダリング テクニックを探してください。マーカーの形状は、テクスチャによって定義できます。または、マーカーの形状を記述する方程式を解くことにより、フラグメントシェーダーで手続き的に定義し、discard形状の一部ではないすべてのフラグメントを定義することができます。 .

于 2012-10-20T10:04:38.290 に答える