2011-12-22 41 views
0

私のアプリケーションでは、約7から8のテクスチャを使用しています。私は複数のテクスチャリングもやっています。 glDeleteTexture cmdを使用してすべてのテクスチャを削除し、glIsTextureコマンドを使用してチェックしてから、いくつかのテクスチャに対してGL_Trueを取得すると、 glDeleteTexture()関数がテクスチャの削除に失敗した状況を知りたいですか?テクスチャがopenglで削除されない

EDIT:私のコードをデバッグして、今私は主に2つの問題があることを知ります: 私のアプリケーションの一段階で、私は3Dモデルを持っていて、 。したがって、すべてのタッチ入力で私は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); 
    switch(case) 
    { 
    case 1: 
    tex1 = CreateTexture("xyz.pvr"); 
    break; 
    case 2: 
    tex1 = CreateTexture("abc.pvr"); 
    ... 
    ... 

を呼び出しています。 第二に、最後に私がチェックし、次comands

glDeleteTextures(1, &tex1); 
glDeleteTextures(1, &tex2); 
    glDeleteTextures(1, &tex3); 
glDeleteTextures(1, &tex4); 
    glDeleteTextures(1, &tex5); 
glDeleteTextures(1, &tex6) 

を使用して、すべてのテクスチャを削除していますすべてのテクスチャを解放し、別のdata.Soをロードする必要がいずれかの削除または

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

を使用していないが、いくつかのテクスチャについて真実になっています。

+0

あなたは、削除が失敗したコードの短いスニペットに、この問題を軽減することができますか? – Kos

答えて

1

あなたは、OpenGLから返されたエラーを追跡するためのコードを追加することで、自分自身をすることを検討すべきです。おそらく、テクスチャがまだ使用されている間に、コード内の悪い場所で削除を行っているかもしれません。調べたいOpenGL呼び出し後にglGetError()に電話をかけ、結果を記録してください。

+0

glgetError()を使用した後にGL_NO_ERRORを取得する – LebRon

関連する問題