func loadShader(glctx gl.Context, shaderType gl.Enum, src string) (gl.Shader, error) { shader := glctx.CreateShader(shaderType) if shader.Value == 0 { return gl.Shader{}, fmt.Errorf("glutil: could not create shader (type %v)", shaderType) } glctx.ShaderSource(shader, src) glctx.CompileShader(shader) if glctx.GetShaderi(shader, gl.COMPILE_STATUS) == 0 { defer glctx.DeleteShader(shader) return gl.Shader{}, fmt.Errorf("shader compile: %s", glctx.GetShaderInfoLog(shader)) } return shader, nil }
func loadShader(glctx gl.Context, shaderType gl.Enum, assetName string) (gl.Shader, error) { // Borrowed from golang.org/x/mobile/exp/gl/glutil src, err := loadAsset(assetName) if err != nil { return gl.Shader{}, err } shader := glctx.CreateShader(shaderType) if shader.Value == 0 { return gl.Shader{}, fmt.Errorf("glutil: could not create shader (type %v)", shaderType) } glctx.ShaderSource(shader, string(src)) glctx.CompileShader(shader) if glctx.GetShaderi(shader, gl.COMPILE_STATUS) == 0 { defer glctx.DeleteShader(shader) return gl.Shader{}, fmt.Errorf("shader compile: %s", glctx.GetShaderInfoLog(shader)) } return shader, nil }