如何删除我制作的所有纹理?假设我加载了一些纹理:
GLuint tx_wall,tx_floor,tx_tiles;
tx_wall=LoadTexture("tex_wall.raw",512,512),
tx_floor=LoadTexture("tex_floor.raw",512,512),
tx_tiles=LoadTexture("tex_tiles.raw",512,512);
Run Code Online (Sandbox Code Playgroud)
然后使用它们:
glBindTexture(GL_TEXTURE_2D,tx_wall);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex3f(0, 0, 0);
glTexCoord2f(1, 0); glVertex3f(0, 50, 0);
glTexCoord2f(1, 1); glVertex3f(0, 0, 14);
glTexCoord2f(0, 1); glVertex3f(0, 50, 14);
glEnd();
glBindTexture(GL_TEXTURE_2D,tx_floor);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex3f(0, 0, 0);
glTexCoord2f(1, 0); glVertex3f(50, 50, 0);
glTexCoord2f(1, 1); glVertex3f(50, 50, 0);
glTexCoord2f(0, 1); glVertex3f(0, 0, 0);
glEnd();
(and so on)
Run Code Online (Sandbox Code Playgroud)
当游戏结束时,删除它们:
glDeleteTextures(1,&tx_wall);
glDeleteTextures(1,&tx_floor);
glDeleteTextures(1,&tx_tiles);
Run Code Online (Sandbox Code Playgroud)
一切正常,但如果我有10或20个纹理,我将如何终止它们而不取名字?
如果将所有纹理标识符放在一个数组中,您可以使用一次调用将它们全部删除glDeleteTextures
(就像您可以在一次调用中使用它们一样生成它们glGenTextures
).
GLuint textures[3];
glGenTextures(3, textures);
/* ... */
glDeleteTextures(3, textures);
Run Code Online (Sandbox Code Playgroud)