Skip to content
run.go 925 B
Newer Older
faiface's avatar
faiface committed
package pixel

import (
	"github.com/faiface/mainthread"
faiface's avatar
faiface committed
	"github.com/go-gl/glfw/v3.2/glfw"
)

// Run is essentialy the "main" function of Pixel. It exists mainly due to the technical
faiface's avatar
faiface committed
// limitations of OpenGL and operating systems. In short, all graphics and window manipulating
// calls must be done from the main thread. Run makes this possible.
faiface's avatar
faiface committed
//
// Call this function from the main function of your application. This is necessary, so that
// Run runs on the main thread.
faiface's avatar
faiface committed
//
//   func run() {
//       window := pixel.NewWindow(...)
//       for {
//           // your game's main loop
//       }
//   }
//
//   func main() {
//       pixel.Run(run)
//   }
//
// You can spawn any number of goroutines from you run function and interact with Pixel
faiface's avatar
faiface committed
// concurrently.  The only condition is that the Run function is be called from your main
// function.
func Run(run func()) {
faiface's avatar
faiface committed
	defer glfw.Terminate()