2010-11-25 3 views

Répondre

2

Non, ils sont automatiquement supprimés une fois que vous vous éloignez de votre application. Le plus grand écueil est en fait de ne pas tenir compte des identifiants de texture si votre application est à nouveau active - gardez cela à l'esprit lorsque votre onSurfaceChanged est appelée à nouveau.

4

Si vous n'utilisez plus de texture, vous devez appeler glDeleteTextures() pour libérer les ressources matérielles sous-jacentes. Mais comme l'a dit EboMike, vous devez faire attention à l'utilisation d'une texture créée à partir d'une instance de contexte précédente; Pour développer cette réponse, j'aime créer une classe de texture-wraangling qui enveloppe l'ID de la texture et qui appelle glDeleteTextures() de sa méthode finalize(), mais qui a aussi un int-static statique nommé "contextId" qui s'incrémente chaque fois temps où le contexte GL est créé (c'est-à-dire dans onSurfaceCreated); le wrangler de texture doit suivre la valeur de contextId lorsqu'il est instancié, et si la valeur change dessus, cela signifie qu'il doit recharger ses textures (en gardant à l'esprit que les anciens ID de texture étaient déjà ignorés avec l'ancien contexte).