func onStart(glctx gl.Context) { var err error program, err = glutil.CreateProgram(glctx, vertexShader, fragmentShader) if err != nil { log.Printf("error creating GL program: %v", err) return } for i := uint32(0); i < 5; i++ { name, size, ty := glctx.GetActiveUniform(program, i) log.Printf("name: %s; size: %d; ty: %s", name, size, ty) } buf = glctx.CreateBuffer() glctx.BindBuffer(gl.ARRAY_BUFFER, buf) glctx.BufferData(gl.ARRAY_BUFFER, triangleData, gl.STATIC_DRAW) position = glctx.GetAttribLocation(program, "position") color = glctx.GetUniformLocation(program, "color") offset = glctx.GetUniformLocation(program, "offset") images = glutil.NewImages(glctx) fps = debug.NewFPS(images) }