需求描述:
我想动态更新纹理,以显示不同的图片。我做法是:在Init函数中:
glGenTextures(1,&ui32TexID);
MyLoadTexture(tFile);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, GL_TEXTURE_W,GL_TEXTURE_H, 0, GL_RGBA, GL_UNSIGNED_BYTE, pTexData2);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
delete[] pTexData2;在Render函数中:
glBindTexture(GL_TEXTURE_2D, ui32TexID);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, GL_TEXTURE_W,GL_TEXTURE_H, 0, GL_RGBA, GL_UNSIGNED_BYTE, pTexData2);
delete[] pTexData2;但是这样内存会慢慢涨上去,如果把Render函数中的glTexImage2D注释掉。内存就不会增长。请问应该怎么实现纹理动态更新呢?
我想动态更新纹理,以显示不同的图片。我做法是:在Init函数中:
glGenTextures(1,&ui32TexID);
MyLoadTexture(tFile);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, GL_TEXTURE_W,GL_TEXTURE_H, 0, GL_RGBA, GL_UNSIGNED_BYTE, pTexData2);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
delete[] pTexData2;在Render函数中:
glBindTexture(GL_TEXTURE_2D, ui32TexID);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, GL_TEXTURE_W,GL_TEXTURE_H, 0, GL_RGBA, GL_UNSIGNED_BYTE, pTexData2);
delete[] pTexData2;但是这样内存会慢慢涨上去,如果把Render函数中的glTexImage2D注释掉。内存就不会增长。请问应该怎么实现纹理动态更新呢?
不好意思忘记写句话了。在Init函数中:
glGenTextures(1,&ui32TexID);
MyLoadTexture(tFile);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, GL_TEXTURE_W,GL_TEXTURE_H, 0, GL_RGBA, GL_UNSIGNED_BYTE, pTexData2);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
delete[] pTexData2;在Render函数中:
MyLoadTexture(tNewFile);
glBindTexture(GL_TEXTURE_2D, ui32TexID);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, GL_TEXTURE_W,GL_TEXTURE_H, 0, GL_RGBA, GL_UNSIGNED_BYTE, pTexData2);
delete[] pTexData2;