Iphone OpenGL ES-glImageProcessing-删除纹理

Iphone OpenGL ES-glImageProcessing-删除纹理,iphone,objective-c,c,opengl-es,Iphone,Objective C,C,Opengl Es,我使用苹果公司的例子来执行一些过滤操作。但是,我希望能够加载到纹理的新图像 当前,该示例使用以下行加载图像: loadTexture("Image.png", &Input, &renderer); CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(CGImage)); (我对其进行了修改,以接受实际的UIImage): 但是,在测试如何重新绘制新图像时,我尝试实现(在Imaging.c中): 而

我使用苹果公司的例子来执行一些过滤操作。但是,我希望能够加载到纹理的新图像

当前,该示例使用以下行加载图像:

loadTexture("Image.png", &Input, &renderer); 
CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(CGImage)); 
(我对其进行了修改,以接受实际的UIImage):

但是,在测试如何重新绘制新图像时,我尝试实现(在Imaging.c中):

而示例应用程序在以下情况下崩溃:

loadTexture("Image.png", &Input, &renderer); 
CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(CGImage)); 
在纹理中

我还尝试通过以下方式删除活动纹理:

loadTexture(image, &Input, &renderer);
glDeleteTextures(GL_TEXTURE_2D, 0);
loadTexture(newImage, &Input, &renderer);
这也失败了

有人知道如何从opengl es界面删除图像/纹理,以便我可以加载新图像吗

注意:在Texture.c中,apple声明“此函数的调用者负责删除GL纹理对象。”我想这就是我要问的。苹果似乎没有给出任何线索;-)

另请注意:我已经看到这个问题在很多地方提出,但似乎没有人有答案。我相信其他人也会感谢你在这个话题上的帮助!非常感谢

干杯,
Brett

在第二种情况下,您不正确地使用了
glDeleteTextures()
。该函数的第一个参数是要删除多少纹理,第二个参数是纹理名称数组(或指向单个纹理名称的指针)。您需要执行以下操作:

glDeleteTextures(1, &textureName);
其中
textureName
是创建时获得的纹理的名称。该值似乎存储在传递到
loadTexture()
的图像结构的
texID
组件中


这并不能完全解释您看到的崩溃,这似乎是输入图像的内存管理问题(可能是在访问其CGImage组件之前被丢弃的自动释放对象)。

这个问题可能最好发布在