gpt4 book ai didi

c++ - 是否需要释放/释放 GL_TEXTURE?

转载 作者:太空宇宙 更新时间:2023-11-04 16:29:53 24 4
gpt4 key购买 nike

我有一个 GLTexture 类,它使用以下方法从文件初始化纹理:

void GLTexture::LoadBMP(char *name)
{
// Create a place to store the texture
AUX_RGBImageRec *TextureImage[1];

// Set the pointer to NULL
memset(TextureImage,0,sizeof(void *)*1);

// Load the bitmap and assign our pointer to it
TextureImage[0] = auxDIBImageLoad(name);

// Just in case we want to use the width and height later
width = TextureImage[0]->sizeX;
height = TextureImage[0]->sizeY;

// Generate the OpenGL texture id
glGenTextures(1, &texture[0]);

// Bind this texture to its id
glBindTexture(GL_TEXTURE_2D, texture[0]);

// Use mipmapping filter
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

// Generate the mipmaps
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

// Cleanup
if (TextureImage[0])
{
if (TextureImage[0]->data)
free(TextureImage[0]->data);

free(TextureImage[0]);
}
}

它似乎处理了数据。然后通过调用此函数在程序中使用纹理

void GLTexture::Use()
{
glEnable(GL_TEXTURE_2D); // Enable texture mapping
glBindTexture(GL_TEXTURE_2D, texture[0]); // Bind the texture as the current one

}

由于纹理必须以某种方式驻留在内存中才能被绑定(bind),我想知道退出时是否需要执行任何额外的清理任务?或者加载方法中的是否足够....

最佳答案

是的,你应该使用 glDeleteTextures .您可能可以在退出时不使用它而逃脱,因为您的整个上下文将被破坏,但最好还是这样做。

关于c++ - 是否需要释放/释放 GL_TEXTURE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8350077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com