func (c *chip8) Chip8_FX0A(window *glfw.Window) { //FX0A: A key press is awaited, and then stored in VX. glfw.WaitEvents() for k, v := range keyvalues { if window.GetKey(k) == glfw.Press { c.v[(c.opcode & 0x0F00) >> 8] = v c.key[v] = true c.pc += 2 break } } }
func main() { if err := glfw.Init(); err != nil { panic(err) } defer glfw.Terminate() glfw.WindowHint(glfw.Samples, 8) // Anti-aliasing. window, err := glfw.CreateWindow(400, 400, "", nil, nil) if err != nil { panic(err) } window.MakeContextCurrent() if err := gl.Init(); err != nil { panic(err) } glfw.SwapInterval(1) //window.SetPos(50, 600) //window.SetPos(1600, 600) //window.SetPos(1275, 300) //window.SetPos(1200, 300) framebufferSizeCallback := func(w *glfw.Window, framebufferSize0, framebufferSize1 int) { gl.Viewport(0, 0, int32(framebufferSize0), int32(framebufferSize1)) var windowSize [2]int windowSize[0], windowSize[1] = w.GetSize() // Update the projection matrix. gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() gl.Ortho(0, float64(windowSize[0]), float64(windowSize[1]), 0, -1, 1) gl.MatrixMode(gl.MODELVIEW) } { var framebufferSize [2]int framebufferSize[0], framebufferSize[1] = window.GetFramebufferSize() framebufferSizeCallback(window, framebufferSize[0], framebufferSize[1]) } window.SetFramebufferSizeCallback(framebufferSizeCallback) go func() { <-time.After(5 * time.Second) log.Println("trigger!") boxUpdated = true glfw.PostEmptyEvent() }() //gl.ClearColor(0.8, 0.3, 0.01, 1) gl.ClearColor(247.0/255, 247.0/255, 247.0/255, 1) var spinner int for !window.ShouldClose() && glfw.Press != window.GetKey(glfw.KeyEscape) { glfw.WaitEvents() //glfw.PollEvents() gl.Clear(gl.COLOR_BUFFER_BIT) drawSpinner(spinner) spinner++ drawBox() window.SwapBuffers() log.Println("swapped buffers") //runtime.Gosched() } }