2011-11-15 14 views
0

こんにちは皆さん、私は問題に悩まされており、あなたの助けが必要です。私が5つのGLSLシェーダを持っていて、私のopenglプログラムに正常にロードしたとします。私がゲームを終了したいときはもちろん、シェーダを削除する必要があります。だから私はする必要がありますが、シェーダを削除するには:終了時に複数のシェーダーを削除しますか?

    プログラムから
  1. デタッチシェーダ
  2. などglDeleteShader、glDeleteProgram、1とすべてのシェーダによってのために削除シェーダ
  3. 削除シェーダプログラム

1? もし簡単で簡単な方法があれば教えてください。 ありがとうございます!

答えて

4

アプリケーションの終了までシェーダオブジェクトを削除するのを待っていますか?あなたはそれらのためのプログラムをリンクした後にそれらを取り除かなければなりませんでした。プログラムに添付してリンクし、デタッチして削除します(シェーダオブジェクトを再利用しない限り)。

シェーダオブジェクトの荷物をもう持ち歩いていないと、簡単です。ただプログラムを削除してください。

またはしないでください。それはあなた次第です; OpenGLコンテキストはそれ自身の後でクリーンアップされます。しかし、削除したい場合は削除してください。

プログラムを格納する変数が50種類あり、glDeleteProgramを50回入力する必要がない場合は、コードのサイズが不十分であることは明らかです。そのような多くのプログラムをお持ちの場合、リソース管理システムを調達する必要があります。そこでは、リソース(ロードされたプログラムなど)を管理し、それらが破壊されていることを確認することができます。そして、「調達」によって、私は「書く」という意味です。

リソースマネージャーは、基本的にボックスに名前付きオブジェクトを配置し、それらを取得します。リソースマネージャが破棄されると、そのリソースが管理するすべてのリソースも破棄されます(注意:リソースマネージャを作成する方法があります。

+0

ありがとう、私はそれを試してみます。 :) – CppOgl

関連する問題