2010-11-25 33 views

回答

2

不,它们会在您离开应用程序后自动删除。实际上,更大的缺陷是如果您的应用再次激活,忽略纹理ID - 当您再次调用onSurfaceChanged时,请记住这一点。

4

如果您不再使用纹理,那么您应该调用glDeleteTextures()以便可以释放底层硬件资源。但是正如EboMike所说的,你必须小心使用从前一个上下文实例创建的纹理;为了扩展这个答案,我喜欢创建一个包含纹理ID的纹理类,它从finalize()方法中调用glDeleteTextures(),但是也有一个名为“contextId”的app-static int,它会每次递增创建GL上下文的时间(即在onSurfaceCreated中); texture wrangler应该在实例化时跟踪contextId的值,并且如果该值在其上更改,则意味着它应该重新加载其纹理(请记住旧纹理ID已与旧的上下文一起丢弃)。