OpenGL ES - glImageProcessing - удалить текстуру - PullRequest
1 голос
/ 07 июля 2011

Я использую пример glImageProcessing от Apple для выполнения некоторых операций фильтрации.Однако я хотел бы иметь возможность загружать новое изображение в текстуру.

В настоящее время пример загружает изображение со строкой:

loadTexture("Image.png", &Input, &renderer); 

(которую я изменил напринять фактический UIImage):

loadTexture(image, &Input, &renderer);

Однако при тестировании, как перерисовать новое изображение, которое я пытался реализовать (в Imaging.c):

loadTexture(image, &Input, &renderer);
loadTexture(newImage, &Input, &renderer);

, и пример приложения падаетстрока:

CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(CGImage)); 

в Texture.c

Я также попытался удалить активную текстуру с помощью

loadTexture(image, &Input, &renderer);
glDeleteTextures(GL_TEXTURE_2D, 0);
loadTexture(newImage, &Input, &renderer);

, что также не удалось.

Кто-нибудь имеет какие-либо идеи, как удалить изображение / текстуру из интерфейса opengl es, чтобы я мог загрузить новое изображение ???

Примечание: в Texture.c, яблоко заявляет: «Вызывающий эту функциюотвечает за удаление объекта текстуры GL. "Я полагаю, это то, что я спрашиваю, как это сделать.Похоже, Apple не дает никаких подсказок; -)

Также обратите внимание: я видел, что этот вопрос был задан во многих местах, но, похоже, ни у кого нет ответа.Я уверен, что другие оценят помощь по этой теме!Большое спасибо!

Ура, Бретт

1 Ответ

3 голосов
/ 07 июля 2011

Вы используете glDeleteTextures() неправильно во втором случае. Первый параметр этой функции - сколько текстур вы хотите удалить, а второй - массив имен текстур (или указатель на одно имя текстуры). Вам нужно будет сделать что-то вроде следующего:

glDeleteTextures(1, &textureName);

Где textureName - название текстуры, полученной при ее создании. Похоже, что это значение хранится в компоненте texID структуры Image, переданной в loadTexture().

Это не полностью объясняет сбой, который вы видите, который выглядит как проблема управления памятью с вашим входным изображением (возможно, автоматически выпущенный объект, который удаляется перед доступом к его компоненту CGImage).

...