// Load the shader only if it have been modified func loadShaders(oldProgram gl.Program, last *shaderInfo) (gl.Program, *shaderInfo, error) { if last != nil { newInfo, err := loadShaderInfoIfNew("sample", last.vertMod, last.fragMod) if err != nil { return oldProgram, last, err } if newInfo == nil { // nothing new, can reuse the old code return oldProgram, last, nil } else { newProgram, err := createProgram(newInfo) if err != nil { return oldProgram, last, err } oldProgram.Delete() return newProgram, newInfo, err } } last, err := loadShaderInfo("sample") if err != nil { return oldProgram, last, err } oldProgram, err = createProgram(last) return oldProgram, last, err }