73 lines
1.5 KiB
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()
|
|
}
|