これを行う適切な方法は何ですか?
私はこれらの手順を実行しています:
- シェーダーを作成する
- シェーダーをコンパイルする
- プログラムの作成
- シェーダーをプログラムにアタッチ
- リンクプログラム
- シェーダーを削除
http://www.opengl.org/wiki/GLSL_Objectには次のように書かれています:プログラムをリンクした後でも、シェーダー オブジェクトを明示的にデタッチする必要はありません。ただし、リンクが完了したら削除することをお勧めします。そうしないと、プログラム オブジェクトを削除しようとしても、アタッチされたシェーダ オブジェクトが生きたままになります。
また、GLSLシェーダーを削除する適切な方法から? シェーダーを削除しないとメモリが増えると言われています。
したがって、http://www.opengl.org/sdk/docs/man/xhtml/glDetachShader.xmlを確認すると、 glDeleteShader への呼び出しによってシェーダーに削除のフラグが既に付けられていて、他のプログラムオブジェクトにアタッチされていない場合、デタッチ後に削除されます。
だから私の#6は、すぐに取り外さないと役に立たないのですか?
プログラムが正しくコンパイルされた後で (メモリを節約するために) デタッチして削除する必要がありますか?それとも、アプリケーションが終了するときにのみデタッチ/削除する必要がありますか?