6

これを行う適切な方法は何ですか?

私はこれらの手順を実行しています:

  1. シェーダーを作成する
  2. シェーダーをコンパイルする
  3. プログラムの作成
  4. シェーダーをプログラムにアタッチ
  5. リンクプログラム
  6. シェーダーを削除

http://www.opengl.org/wiki/GLSL_Objectには次のように書かれています:プログラムをリンクした後でも、シェーダー オブジェクトを明示的にデタッチする必要はありません。ただし、リンクが完了したら削除することをお勧めします。そうしないと、プログラム オブジェクトを削除しようとしても、アタッチされたシェーダ オブジェクトが生きたままになります。

また、GLSLシェーダーを削除する適切な方法から? シェーダーを削除しないとメモリが増えると言われています。

したがって、http://www.opengl.org/sdk/docs/man/xhtml/glDetachShader.xmlを確認すると、 glDeleteShader への呼び出しによってシェーダーに削除のフラグが既に付けられていて、他のプログラムオブジェクトにアタッチされていない場合、デタッチ後に削除されます。

だから私の#6は、すぐに取り外さないと役に立たないのですか?

プログラムが正しくコンパイルされた後で (メモリを節約するために) デタッチして削除する必要がありますか?それとも、アプリケーションが終了するときにのみデタッチ/削除する必要がありますか?

4

1 に答える 1