Hi,
A leak in the TextureRenderer classes (at least in LWJGLTextureRenderer):
[java]
public void cleanup() {
if (!isSupported) {
return;
}
if (fboID > 0) {
IntBuffer id = BufferUtils.createIntBuffer(1);
id.put(fboID);
id.rewind();
EXTFramebufferObject.glDeleteFramebuffersEXT(id);
}
if (fboIDMS > 0) {
IntBuffer id = BufferUtils.createIntBuffer(1);
id.put(fboIDMS);
id.rewind();
EXTFramebufferObject.glDeleteFramebuffersEXT(id);
}
}
[/java]
Render buffers are not deleted.
The code should be:
[java]
public void cleanup() {
if (!isSupported) {
return;
}
if (fboID > 0) {
IntBuffer id = BufferUtils.createIntBuffer(1);
id.put(fboID);
id.rewind();
EXTFramebufferObject.glDeleteFramebuffersEXT(id);
fboID = 0;
}
if (fboIDMS > 0) {
IntBuffer id = BufferUtils.createIntBuffer(1);
id.put(fboIDMS);
id.rewind();
EXTFramebufferObject.glDeleteFramebuffersEXT(id);
fboIDMS = 0;
}
if (colorRBID > 0) {
IntBuffer id = BufferUtils.createIntBuffer(1);
id.put(colorRBID);
id.rewind();
EXTFramebufferObject.glDeleteRenderbuffersEXT(id);
colorRBID = 0;
}
if (depthRBID > 0) {
IntBuffer id = BufferUtils.createIntBuffer(1);
id.put(depthRBID);
id.rewind();
EXTFramebufferObject.glDeleteRenderbuffersEXT(id);
depthRBID = 0;
}
}
[/java]
Hm? What does changing the parameter to 0 change?
Changing the parameter to 0 after the glDelete avoid possibles extra glDelete calls if cleanUp() is called several times but it’s just a coding design detail on my personnal version of LWJGLTextureRenderer…
The important change in this code is the add of glDeleteRenderbuffersEXT() to release the render buffers.