После создания текстур в Android OpenGL ES мне нужно явно удалить эти текстуры позже, используя glDeleteTextures()? Если да, то как мне настроить обратный вызов для этого?Должен ли я удалять текстуры в GLSurfaceView?
Заранее спасибо
После создания текстур в Android OpenGL ES мне нужно явно удалить эти текстуры позже, используя glDeleteTextures()? Если да, то как мне настроить обратный вызов для этого?Должен ли я удалять текстуры в GLSurfaceView?
Заранее спасибо
Нет, они автоматически удаляются, как только вы отойти от вашего приложения. Большая ошибка на самом деле заключается в том, чтобы игнорировать идентификаторы текстур, если ваше приложение снова активируется - помните об этом, когда ваш onSurfaceChanged
вызывается снова.
Если вы больше не используете текстуру, вы должны вызвать glDeleteTextures(), чтобы освободить исходные аппаратные ресурсы.
Но, как сказал EboMike, вы должны быть осторожны с использованием текстуры, созданной из предыдущего экземпляра контекста; чтобы расширить этот ответ, мне нравится создавать класс текстуры, который обертывает идентификатор текстуры и который вызывает glDeleteTextures() из метода finalize(), но затем также имеет приложение-статический int с именем «contextId», который увеличивается каждый раз время создания контекста GL (т. е. в onSurfaceCreated); разработчик текстур должен отслеживать значение contextId при его создании, а если значение изменяется на нем, это означает, что он должен перезагрузить свои текстуры (имея в виду, что старые идентификаторы текстуры уже были отброшены вместе со старым контекстом).