0

プロットしたときに画像を形成する何百万もの3drgbポイントを含むアプリケーションがあります。MFCアプリケーションでそれらをスクリーニングするための最速の方法は何ですか?CDC.SetPixelVをビットマップと組み合わせて試しましたが、これは非常に遅いようで、MFCビュークラスのDirect3DまたはOpenGLウィンドウを探しています。他に見るのに良い場所はありますか?

4

2 に答える 2

1

ダブルバッファリングが解決策です。codeproject には多くの例があります。たとえば、これを確認してください

于 2012-12-17T21:50:23.430 に答える
1

点群のように聞こえます。その用語で検索すると、良い情報が見つかるかもしれません。

3D ハードウェアは、3D ポイントを取得して 2D ディスプレイに表示する最速の方法であるため、Direct3D または OpenGL のいずれかが当然の選択肢のように思えます。

ポイントの数がディスプレイのピクセル数よりもはるかに多い場合は、最初にビューの外にわずかにあるポイントをカリングすることをお勧めします。すべてのポイントをある種の空間分割構造 (octree など) に配置し、視錐台の完全に外側にあるノード内のポイントを省略します。これにより、システム メモリから GPU メモリにプッシュする必要があるデータの量が減少します。これがボトルネックになる可能性があります。(ポイント クラウドが静的で、フライ スルーを構築しているだけで、GPU に十分なメモリがある場合は、カリングをスキップし、すべてのデータを一度に送信してから、各フレームの変換を更新するだけで済みます)。

GPU を使用せず、代わりにソフトウェア レンダラーを作成する場合は、ディスプレイと同じピクセル フォーマットのビットマップにレンダリングする必要があります (ブリットがピクセル フォーマットを行う必要がある可能性を排除するため)。ビットマップをディスプレイに爆破します)。適切なウィンドウ サイズの場合、1 秒あたり 30 フレームでのブリッティングが可能ですが、CPU がレンダリングを行うための時間があまり残らない可能性があります。

于 2012-12-17T22:59:20.440 に答える