// TODO(crawshaw): It looks like we need a gl.RegisterInit feature. // TODO(crawshaw): The gldebug mode needs to complain loudly when GL functions // are called before init, because often they fail silently. func fpsInit() { font := "" switch runtime.GOOS { case "android": font = "/system/fonts/DroidSansMono.ttf" case "darwin": font = "/Library/Fonts/Andale Mono.ttf" case "linux": font = "/usr/share/fonts/truetype/droid/DroidSansMono.ttf" default: panic(fmt.Sprintf("go.mobile/app/debug: unsupported runtime.GOOS %q", runtime.GOOS)) } b, err := ioutil.ReadFile(font) if err != nil { panic(err) } f, err := freetype.ParseFont(b) if err != nil { panic(err) } monofont.SetFont(f) monofont.SetSrc(image.Black) monofont.SetHinting(freetype.FullHinting) toPx := func(x geom.Pt) int { return int(math.Ceil(float64(geom.Pt(x).Px()))) } fps.Image = glutil.NewImage(toPx(50), toPx(12)) monofont.SetDst(fps.Image.RGBA) monofont.SetClip(fps.Bounds()) monofont.SetDPI(72 * float64(geom.PixelsPerPt)) monofont.SetFontSize(12) }
func (e *engine) LoadTexture(src image.Image) (sprite.Texture, error) { b := src.Bounds() t := &texture{glutil.NewImage(b.Dx(), b.Dy()), b} t.Upload(b, src) // TODO: set "glImage.Pix = nil"?? We don't need the CPU-side image any more. return t, nil }
// TODO(crawshaw): It looks like we need a gl.RegisterInit feature. // TODO(crawshaw): The gldebug mode needs to complain loudly when GL functions // are called before init, because often they fail silently. func fpsInit() { b := font.Monospace() f, err := freetype.ParseFont(b) if err != nil { panic(err) } monofont.SetFont(f) monofont.SetSrc(image.Black) monofont.SetHinting(freetype.FullHinting) toPx := func(x geom.Pt) int { return int(math.Ceil(float64(geom.Pt(x).Px()))) } fps.Image = glutil.NewImage(toPx(50), toPx(12)) monofont.SetDst(fps.Image.RGBA) monofont.SetClip(fps.Bounds()) monofont.SetDPI(72 * float64(geom.PixelsPerPt)) monofont.SetFontSize(12) }