1

Wavefront OBJローダーを作成しましたが、動作しますが、500ポリゴン、1000ポリゴンは約10秒の遅延、2000以上のポリゴンはフリーズしてクラッシュした後、FPSは約3に低下します。

私のC++/ Qtアプリケーションは約15〜20 FPSの100万ポリゴンをロードしますが、PyOpengl(ctypes)およびPyQt(sip)ラッパーが疑われます。

誰かが私を助けるために高解像度モデルをPyOpenglとPyQtアプリケーションにロードしようとしましたか?

編集:OBJローダーに「頂点バッファオブジェクト」を使用したので、CPUとは何の関係もありません。

4

1 に答える 1

4

http://pyopengl.sourceforge.net/ctypes/using.htmlからの Python + OpenGL のパフォーマンスのヒント

Python は、その実行モデルの信じられないほどの一般性のために、(現在) かなり遅い言語です。これは、C や C++ などの言語でうまく機能する OpenGL をコーディングする特定のアプローチが、Python では非常に遅くなることを意味します。覚えておくべき重要なアイデアは、可能な限り反復と繰り返しの作業を OpenGL 実装 (C および/またはハードウェアで実装されている) に押し込みたいということです。

これを達成するには、次の 2 つの主要なアプローチがあります。

  • 配列ベースのジオメトリを使用する
  • 表示リストを使用する

解決済み:

Ctypes を使用してパフォーマンスの問題を解決します。C++ アプリ (現在はほとんどが C) の周りに小さなラッパーを記述し、GUI と GL ウィジェットに PyQt を使用します。-- 約 100 万ポリゴンで 10 FPS が得られます。パフォーマンスは岩石で、強くお勧めします!!

于 2012-02-15T10:59:20.347 に答える