基本的にopengl固定関数パイプラインを使用して平行座標を描画するコードがあります。座標には7つの軸があり、64kの線を描画します。そのため、出力が乱雑になりますが、Intel i5 proc、8gb ddr3 ramを搭載したラップトップでコードを実行すると、正常に実行されます。私の友人の1人は、2つの異なるシステムで同じコードを実行しました。どちらもInteli7と8gbのddr3ramとnvidiaのGPUを備えています。これらのシステムでは、コードはシャッター付きで実行され、マウスポインタが応答しなくなることがあります。なぜこれが起こっているのかを皆さんが理解できれば、それは大きな助けになるでしょう。当初は、専用のGPUを備えているため、これらのシステムではさらに高速に実行されると思いました。私自身のラップトップにはubuntu12.04があり、他の両方のシステムにはubuntu10.xがあります。
2 に答える
誤解しているかもしれませんが、ここまでです。
GPUにコマンドを与えるglBegin、glEndなどのAPI呼び出しがあるため、GPUの馬力を使用していますが、配列への呼び出し、APIとは関係のない他の関数もあります-それらはCPUを使用します。データをバッファー (glGenBuffers など) に保存して OpenGL の onDraw ループの外側でモデルをプリロードし、onDraw ループでこれらのバッファー (VBO/IBO) を使用することをお勧めします。
正しく管理すれば、GPU/CPU の負荷を減らすことができます。お役に立てれば。
オレグ
固定関数パイプラインは、最新の opengl ドライバーの gpu プログラマブル機能を使用して実装されます。これは、ほとんどの作業が GPU によって行われることを意味します。修正された関数 opengl は、同じことを行うために glsl を使用するよりも遅くはないはずですが、実際には柔軟性がありません。
軸と7軸を持つ座標とはどういう意味ですか? アプリケーションのスクリーンショットはありますか?
マウスの吃音は、ディスプレイ ドライバーに深刻な負担をかけているように聞こえます。これは、opengl 呼び出しが多すぎるようです。即時モード (glBegin glVertex ...) を使用していますか? 一部の OpenGL ドライバーには、即時モードの最適な実装がない場合があります。データには頂点バッファー オブジェクトを使用する必要があります。