mymobile/main.go

73 lines
1.5 KiB
Go

package main
import (
"log"
"runtime"
"golang.org/x/mobile/app"
"golang.org/x/mobile/event/lifecycle"
"golang.org/x/mobile/event/paint"
"golang.org/x/mobile/event/size"
// "golang.org/x/mobile/geom"
"golang.org/x/mobile/gl"
)
func main() {
app.Main(func(a app.App) {
var (
glctx gl.Context
sz size.Event
// rotation geom.Angle
)
for e := range a.Events() {
switch e := a.Filter(e).(type) {
case lifecycle.Event:
switch e.Crosses(lifecycle.StageVisible) {
case lifecycle.CrossOn:
glctx, _ = e.DrawContext.(gl.Context)
onStart(glctx)
case lifecycle.CrossOff:
onStop()
glctx = nil
}
case size.Event:
sz = e
case paint.Event:
if glctx == nil {
continue
}
onDraw(glctx, sz)
a.Publish()
}
}
})
}
func onStart(glctx gl.Context) {
log.Println("jwc OPENGL App started")
log.Println("jwc OPENGL App started")
log.Println("jwc OPENGL App started")
log.Println("jwc OPENGL App started")
log.Println("jwc OPENGL App started # purple")
// glctx.ClearColor(1, 0, 1, 0.5)
glctx.ClearColor(1, 0, 1, 0.5) // purple
glctx.Clear(gl.COLOR_BUFFER_BIT)
}
func onStop() {
log.Println("App stopped")
}
func onDraw(glctx gl.Context, sz size.Event) {
runtime.LockOSThread()
// glctx.ClearColor(0.1, 0.5, 0.8, 0.5) // blue
// glctx.ClearColor(0.8, 0.5, 0.1, 0.5) // orange
// glctx.ClearColor(0.5, 0.8, 0.1, 0.5) // green
// glctx.ClearColor(0.5, 0.8, 0.1, 0.5)
// glctx.Clear(gl.COLOR_BUFFER_BIT)
runtime.UnlockOSThread()
}