zorldo

Goofing around with Ebiten
git clone git://bsandro.tech/zorldo
Log | Files | Refs | README

context.go (712B)


      1 // Copyright 2016 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 // +build !android
      6 
      7 package gldriver
      8 
      9 import (
     10 	"runtime"
     11 
     12 	"golang.org/x/mobile/gl"
     13 )
     14 
     15 // NewContext creates an OpenGL ES context with a dedicated processing thread.
     16 func NewContext() (gl.Context, error) {
     17 	glctx, worker := gl.NewContext()
     18 
     19 	errCh := make(chan error)
     20 	workAvailable := worker.WorkAvailable()
     21 	go func() {
     22 		runtime.LockOSThread()
     23 		err := surfaceCreate()
     24 		errCh <- err
     25 		if err != nil {
     26 			return
     27 		}
     28 
     29 		for range workAvailable {
     30 			worker.DoWork()
     31 		}
     32 	}()
     33 	if err := <-errCh; err != nil {
     34 		return nil, err
     35 	}
     36 	return glctx, nil
     37 }