func draw() { if redraw { verts := [3][2]gl.Float{{-1, -1}, {1, -1}, {0, -1}} colors := [3][3]gl.Float{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}} var mat, rot, scale mathgl.Mat4 makeZRotMatrix(float32(viewRotX), &rot) makeScaleMatrix(.5, .5, .5, &scale) rot.Multiply(&scale) mat = rot gl.UniformMatrix4fv(uMatrix, 1, gl.Boolean(false), (*gl.Float)(&mat[0])) gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) { gl.VertexAttribPointer(attrPos, 2, gl.FLOAT, gl.Boolean(false), 0, gl.Void(&verts[0])) gl.VertexAttribPointer(attrColor, 3, gl.FLOAT, gl.Boolean(false), 0, gl.Void(&colors[0])) gl.EnableVertexAttribArray(attrPos) gl.EnableVertexAttribArray(attrColor) gl.DrawArrays(gl.TRIANGLES, 0, 3) gl.DisableVertexAttribArray(attrPos) gl.DisableVertexAttribArray(attrColor) } redraw = false } }