私はWindowsベースのOpenGLビューアアプリケーションを作成しています。 私は、VBO +三角形のストリップ+ glDrawArraysメソッドを使用して、私のメッシュをレンダリングしています。すべてのものがすべてのマシンで完璧に動作しています。 nVidia Quadroカードを搭載したWindowsデスクトップの場合、最初にglDrawArrayを呼び出すと、作業/ピークワーキングメモリが撮影されます。 nvidiaモバイルグラフィックカードを搭載したラップトップの場合、作業メモリーまたはピーク作業メモリーは撮影されません。最後の数日以来、私はVBOのメモリに関するほとんどのフォーラム/投稿/ツイートをチェックしています。 GL_STATIC_DRAW/DYNAMIC/STREAM、glMapbuffer/glunmapbufferのようなVBOのすべての組み合わせを試しました。しかし、何も私のデスクトップ上のメモリを撮影を停止します。 私はogl 1.5でVBOのためにいくつかのフラグがないと思っています。 PS:私のアプリケーションにはほぼ500から600のVBOがあります。私は構造の配列を使用しています(つまり、構造内でv、n、c、tを一緒に使用しています)。そして、私はVBOを16kのメモリに合わせるつもりはありません。 この問題を解決するためにどのように進めなければならないか、誰にでもわかることができます。任意のヒント/ポインタが役立ちます。glDrawArray + VBOメモリフットプリントを増やす
答えて
実際にメモリが不足していますか、またはアプリケーションのメモリ消費がますます増えていますか?そうでなければ、なぜ気になるのですか? OpenGLの実装がそれ自身の作業コピーを保持している場合、これはおそらく理由によるものです。また、これを避けるためにOpenGL側で行うことはほとんどありません。ドライバを管理する方法はドライバによって異なります。 NVIDIAに連絡しているので、ドライバのバグであるかどうかを再確認することができます。
Thanx datenwolf ....私はnVidiaの人に尋ねます。私の主な問題は、これはすべてのマシンで発生しないということです。私の製品の改善のために、私は理由を少なくとも知っているはずです。 – Niks
@ user368912:OpenGLは、レンダリングを実行するmachinaryの抽象モデルを想定しています。また、ドライバ/ GPUの組み合わせは、OpenGL仕様に準拠するために自由に実行できます。たとえば、テクスチャや頂点バッファオブジェクトなどのOpenGLオブジェクトでは、GPUメモリから削除された場合に備えて、GPUで再作成するために、システムメモリに追加のコピーが必要になることがあります。たとえば、GPUがクラッシュし、ドライバがトランスペアレントに再起動するため、システムRAMに完全なデータコピーが必要です。または、ドライバは、GPUにパラレルにアクセスする他のアプリケーションのためにオブジェクトを交換するための準備をします。 – datenwolf
ここに新たに登場した場合は、受け入れ機能と投票機能についてご説明ください。 –