/** * Detaches all shader codes and deletes the program. If <code>destroyShaderCode</code> is true it * destroys the shader codes as well. */ public synchronized void release(GL2ES2 gl, boolean destroyShaderCode) { useProgram(gl, false); for (Iterator<ShaderCode> iter = allShaderCode.iterator(); iter.hasNext(); ) { ShaderCode shaderCode = iter.next(); if (attachedShaderCode.remove(shaderCode)) { ShaderUtil.detachShader(gl, shaderProgram, shaderCode.shader()); } if (destroyShaderCode) { shaderCode.destroy(gl); } } allShaderCode.clear(); attachedShaderCode.clear(); if (0 != shaderProgram) { gl.glDeleteProgram(shaderProgram); shaderProgram = 0; } }