Android OpenGL ESでテクスチャを作成した後、後でglDeleteTextures()を使用してこれらのテクスチャを明示的に削除する必要がありますか?もしそうなら、私はこれを行うコールバックをどのように設定するのですか?事前にGLSurfaceViewでテクスチャを削除する必要がありますか?
おかげ
Android OpenGL ESでテクスチャを作成した後、後でglDeleteTextures()を使用してこれらのテクスチャを明示的に削除する必要がありますか?もしそうなら、私はこれを行うコールバックをどのように設定するのですか?事前にGLSurfaceViewでテクスチャを削除する必要がありますか?
おかげ
アプリから離れたらいいえ、それらは自動的に削除されます。あなたのアプリが再びアクティブになった場合は、実際にテクスチャIDを無視してください。onSurfaceChanged
が再び呼び出されたときにそれを覚えておいてください。
テクスチャを使用しなくなった場合は、基になるハードウェアリソースを解放できるようにglDeleteTextures()を呼び出す必要があります。
しかし、EboMike氏によると、以前のコンテキストインスタンスから作成されたテクスチャを使用する場合は注意が必要です。その答えを拡張するために、私はテクスチャのIDをラップし、glDeleteTextures()をfinalize()メソッドから呼び出すと同時に、contextIdという名前のapp-static intをインクリメントするtexture-wranglingクラスを作成したいGLコンテキストが作成される(つまり、onSurfaceCreatedで)。テクスチャラングラーはインスタンス化時にcontextIdの値を追跡する必要があります。値が変更された場合は、テクスチャをリロードする必要があります(古いテクスチャIDは既に古いコンテキストとともに破棄されています)。