Нужно ли удалять текстуры в GLSurfaceView? - PullRequest
3 голосов
/ 25 ноября 2010

После создания текстур в Android OpenGL ES, нужно ли позже явно удалять эти текстуры с помощью glDeleteTextures ()? Если да, то как мне настроить обратный вызов для этого?

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 06 января 2011

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

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

2 голосов
/ 25 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...