在opengl中不删除纹理

在opengl中不删除纹理,opengl,textures,Opengl,Textures,在我的应用程序中,我使用了大约7到8种纹理。我正在做多重纹理以及。当我使用glDeleteTexture cmd删除所有纹理并使用glIsTexture命令检查,然后为某些纹理获取GL_True时。 我想知道glDeleteTexture()函数在哪些条件下无法删除纹理 编辑:好的,我调试了我的代码,现在我知道主要有两个问题: 在我的应用程序的一个阶段,我有一个3d模型,在不同的触摸输入上,我正在改变它的纹理。因此,每次触摸输入时,我都会调用以下代码 glDeleteTextures(1,

在我的应用程序中,我使用了大约7到8种纹理。我正在做多重纹理以及。当我使用glDeleteTexture cmd删除所有纹理并使用glIsTexture命令检查,然后为某些纹理获取GL_True时。 我想知道glDeleteTexture()函数在哪些条件下无法删除纹理

编辑:好的,我调试了我的代码,现在我知道主要有两个问题: 在我的应用程序的一个阶段,我有一个3d模型,在不同的触摸输入上,我正在改变它的纹理。因此,每次触摸输入时,我都会调用以下代码

   glDeleteTextures(1, &tex1);
  switch(case)
  {
  case 1:
  tex1 = CreateTexture("xyz.pvr");
  break;
  case 2:
  tex1 = CreateTexture("abc.pvr");
  ...
  ...
其中CreateTexture如下所示

    UploadImage(file);
    GLuint name;
glEnable(GL_TEXTURE_2D);
glGenTextures(1, &name);
glBindTexture(GL_TEXTURE_2D, name);
glTexEnvf( GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_DECAL);
glTexParameterf(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);


GLfloat fLargest;
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &fLargest);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, fLargest);

glTexImage2D(GL_TEXTURE_2D, level, format, w, h, 0, format, type, data);
    UnloadImage();
这个代码在每次触摸输入时都会给我一些泄漏。 第二,最后我必须释放所有纹理并加载不同的数据

    glDeleteTextures(1, &tex1);
glDeleteTextures(1, &tex2);
    glDeleteTextures(1, &tex3);
glDeleteTextures(1, &tex4);
    glDeleteTextures(1, &tex5);
glDeleteTextures(1, &tex6)
然后检查其是否已删除或未使用

    glIsTexture(tex1);
    glIsTexture(tex2);
    glIsTexture(tex3);
    glIsTexture(tex4);
    glIsTexture(tex5);
    glIsTexture(tex6);

但是对于某些纹理,这是真的。

你应该自己调查一下,通过添加代码来跟踪OpenGL返回的错误。也许您在代码中的一个不好的地方执行删除操作,而纹理仍在使用中,或者其他什么。在您希望调查的OpenGL调用之后调用
glGetError()
,并记录结果。

您能将此问题简化为删除失败的一小段代码吗?使用glGetError()后获取GL\u NO\u ERROR