Exemple #1
0
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
	}
}
Exemple #2
0
func makeZRotMatrix(angle float32, m *mathgl.Mat4) {
	c := float32(math.Cos(float64(angle) * math.Pi / 180.0))
	s := float32(math.Sin(float64(angle) * math.Pi / 180.0))
	m.Identity()
	m[0] = c
	m[1] = s
	m[4] = -s
	m[5] = c
}