在我的應用程序中,我使用了大約7到8個紋理。我也在做多個紋理。當我使用glDeleteTexture cmd刪除所有紋理並使用glIsTexture命令檢查,然後獲取某些紋理的GL_True。 我想知道在哪些條件下glDeleteTexture()函數無法刪除紋理?在opengl中不刪除紋理
編輯:好吧,我調試我的代碼,現在我知道主要有兩個問題: 在我的應用程序的一個階段,我有一個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();
給這個代碼是給我在每個觸摸輸入一些泄漏。 其次到底我必須釋放所有紋理和加載不同data.So我用下面的命令對應的
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);
但對某些紋理變得真實。
你能否將此問題簡化爲刪除失敗的簡短代碼片段? – Kos 2011-12-22 10:19:48