func reshape(w *glfw.Window, width, height int) { gl.Viewport(0, 0, width, height) halfW, halfH := float32(width)*0.5, float32(height)*0.5 Projection = mgl.Ortho2D(-halfW, halfW, -halfH, halfH).Mul4( mgl.Translate3D(-halfW, -halfH, 0)) go func(m mgl.Mat4f) { MVP <- m }(Projection.Mul4(ModelView)) }
func draw(width, height int) { gl.Viewport(0, 0, width, height) gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) gl.BindBuffer(gl.ARRAY_BUFFER, verticesArrayBuffer) gl.VertexAttribPointer(attrPos, 4, gl.FLOAT, false, 0, 0) gl.BindBuffer(gl.ARRAY_BUFFER, colorsArrayBuffer) gl.VertexAttribPointer(attrColor, 4, gl.FLOAT, false, 0, 0) gl.DrawArrays(gl.TRIANGLES, 0, 3) gl.Flush() gl.Finish() }
func draw(width, height int) { gl.Viewport(0, 0, width, height) gl.Clear(gl.COLOR_BUFFER_BIT) gl.BindBuffer(gl.ARRAY_BUFFER, verticesArrayBuffer) gl.VertexAttribPointer(attrPos, 4, gl.FLOAT, false, 6*4, 0) // bind texture - FIX size of vertex gl.VertexAttribPointer(attrTexIn, 2, gl.FLOAT, false, 6*4, 4*4) gl.ActiveTexture(gl.TEXTURE0) gl.BindTexture(gl.TEXTURE_2D, textureBuffer) gl.Uniform1i(unifTexture, 0) gl.DrawArrays(gl.TRIANGLE_FAN, 0, 4) gl.Flush() gl.Finish() }
func main() { flag.Parse() glfw.SetErrorCallback(errorCallback) if !glfw.Init() { println("glfw init failure") } defer glfw.Terminate() glfw.WindowHint(glfw.ClientApi, glfw.OpenglEsApi) glfw.WindowHint(glfw.ContextVersionMajor, 2) glfw.WindowHint(glfw.ContextVersionMinor, 0) window, err := glfw.CreateWindow(Width, Height, Title, nil, nil) if err != nil { panic(err) } defer window.Destroy() window.MakeContextCurrent() glfw.SwapInterval(1) window.SetSizeCallback(reshape) window.SetKeyCallback(keyEvent) gl.Viewport(0, 0, Width, Height) initScene() if *debug { go func() { tick := time.Tick(1 * time.Second) for { <-tick fmt.Printf("FPS:%v\tGOROUTINE:%v\r", atomic.LoadUint64(fps), runtime.NumGoroutine()) atomic.StoreUint64(fps, 0) } }() } for !window.ShouldClose() { drawScene() window.SwapBuffers() glfw.PollEvents() atomic.AddUint64(fps, 1) } }
func reshape(width, height int) { currWidth, currHeight = width, height gl.Viewport(0, 0, width, height) }