2010-11-25 4 views

ответ

2

Нет, они автоматически удаляются, как только вы отойти от вашего приложения. Большая ошибка на самом деле заключается в том, чтобы игнорировать идентификаторы текстур, если ваше приложение снова активируется - помните об этом, когда ваш onSurfaceChanged вызывается снова.

4

Если вы больше не используете текстуру, вы должны вызвать glDeleteTextures(), чтобы освободить исходные аппаратные ресурсы.

Но, как сказал EboMike, вы должны быть осторожны с использованием текстуры, созданной из предыдущего экземпляра контекста; чтобы расширить этот ответ, мне нравится создавать класс текстуры, который обертывает идентификатор текстуры и который вызывает glDeleteTextures() из метода finalize(), но затем также имеет приложение-статический int с именем «contextId», который увеличивается каждый раз время создания контекста GL (т. е. в onSurfaceCreated); разработчик текстур должен отслеживать значение contextId при его создании, а если значение изменяется на нем, это означает, что он должен перезагрузить свои текстуры (имея в виду, что старые идентификаторы текстуры уже были отброшены вместе со старым контекстом).

Смежные вопросы