// CreateProgram creates, compiles, and links a gl.Program. func CreateProgram(vertexSrc, fragmentSrc string) (gl.Program, error) { program := gl.CreateProgram() if program.Value == 0 { return gl.Program{}, fmt.Errorf("glutil: no programs available") } vertexShader, err := loadShader(gl.VERTEX_SHADER, vertexSrc) if err != nil { return gl.Program{}, err } fragmentShader, err := loadShader(gl.FRAGMENT_SHADER, fragmentSrc) if err != nil { gl.DeleteShader(vertexShader) return gl.Program{}, err } gl.AttachShader(program, vertexShader) gl.AttachShader(program, fragmentShader) gl.LinkProgram(program) // Flag shaders for deletion when program is unlinked. gl.DeleteShader(vertexShader) gl.DeleteShader(fragmentShader) if gl.GetProgrami(program, gl.LINK_STATUS) == 0 { defer gl.DeleteProgram(program) return gl.Program{}, fmt.Errorf("glutil: %s", gl.GetProgramInfoLog(program)) } return program, nil }
func stop() { stopAudio() gl.DeleteProgram(program) gl.DeleteBuffer(positionbuf) gl.DeleteBuffer(pointsizebuf) }
func (e *Engine) Stop() { gl.DeleteProgram(e.shader.program) for _, buf := range e.shape.Objs { gl.DeleteBuffer(buf.coord) gl.DeleteBuffer(buf.uvcoord) gl.DeleteBuffer(buf.normal) } }
func stop() { gl.DeleteProgram(glimage.program) gl.DeleteBuffer(glimage.quadXY) gl.DeleteBuffer(glimage.quadUV) texmap.Lock() for _, t := range texmap.texs { if t.gltex.Value != 0 { gl.DeleteTexture(t.gltex) } t.gltex = gl.Texture{} } texmap.Unlock() }
func onStop() { gl.DeleteProgram(program) gl.DeleteBuffer(swasBuffer) }
func (e *Engine) Stop() { gl.DeleteProgram(e.shader.program) gl.DeleteBuffer(e.shape.buf) }
func (e *Engine) Stop() { gl.DeleteProgram(e.shader.program) for _, buf := range e.shape.bufs { gl.DeleteBuffer(buf.coord) } }
func onStop() { gl.DeleteProgram(program) gl.DeleteBuffer(buf) }
//停止时触发,清理 func onStop() { gl.DeleteProgram(program) gl.DeleteBuffer(positionbuf) gl.DeleteBuffer(colorbuf) }
func (shader *shader) Close() error { gl.DeleteProgram(shader.program) return nil }