0

メモリ不足の状態で、glReadPixels() で OpenGL から「メモリ不足」エラーが発生します。このような状況に対応する堅牢なヒープ メカニズムを持つプログラムへのプラグインを作成していますが、アプリケーション メモリ管理に OpenGL を使用できるかどうか、またはどのように使用できるかはわかりません。これが可能であるという考えは、Mac OS [X ではない] での同様の問題に関するこの [古いものではありますが] スレッドを通じて私の注意を引きました: http://lists.apple.com/archives/Mac-opengl/2001/Sep/ msg00042.html

私は Windows XP を使用しており、複数の NVidia カードでそれを見てきました。また、ユーザーに伝えることができる可能性のある回避策にも興味があります (スレッドは「仮想メモリの増加」について言及しています)。

ありがとう、ショーン

4

2 に答える 2

1

メモリ不足エラーがglReadPixelsから発生していないことは確かです(実際、glReadPixels はメモリ自体を割り当てません)。

このエラーは、バッファ オブジェクトまたはテクスチャを割り当てる他のルーチンによって発生した可能性があります。メモリ不足エラーを検出したら、必須ではないすべてのバッファ オブジェクト (テクスチャ、テクスチャ ミップマップ、めったに使用されないバッファ オブジェクト) を解放して、glReadPixels の返されたデータを保持する新しいバッファ オブジェクトを割り当てる必要があります。

于 2010-03-15T06:38:08.127 に答える
0

詳細がなければ、言うのは難しいです。最終的に、OpenGL は、割り当てが必要なときにネイティブ OS と対話します。したがって、他に何もなければ、いつでもプロセスのデフォルトの CRT/ヒープ アロケーターを置き換える (またはフックする) ことができ、プラグイン ホストの「より堅牢な」ヒープ マネージャーからブロックをフェッチすることができます。

于 2010-03-14T18:49:30.037 に答える