テクスチャを 1 つまたは 2 つ、場合によってはいくつかのシェーダー、VAO、VBO をロードして、プログラムを実行したとします。
プログラムが何らかのランタイム エラーに遭遇し、それらのバッファ オブジェクトとテクスチャをすべて削除する前に終了したとします。
コンピューターを再起動するまでビデオ メモリに残っていますか?
Java が独自のクリーンアップを行うことは知っていますが、opengl は行うとは思わないので、どうなるか興味があります。
コンピューターを再起動するまでビデオ メモリに残っていますか?
いいえ。グラフィックス カードは、処理を保持しているプロセスが終了したことを通知または通知されるグラフィックス ドライバによって管理されます。プロセスに関連付けられていて、他のプロセスによって使用されていないすべてのリソースが解放されます。
一部の OS では、プロセス間で OpenGL コンテキストを共有できます。プロセスの1つが終了した場合、それらはもちろん残ります。
ところで: OpenGL は「ビデオ メモリ」という用語を使用しません。高速メモリと低速メモリがありますが、実装によっては同じかもしれません。また、テクスチャをアップロードすると、そのコピーもシステム メモリに保持されます。これは、OpenGL がテクスチャとバッファ オブジェクトにメモリの制約を課さないためです。必要に応じて、データをスワップアウトして、必要なリソース用のスペースを確保します。