package graphics type Rect struct { X int Y int Width int Height int } type TexturePart struct { LocationX int LocationY int Source Rect } type Filter int const ( FilterNearest Filter = iota FilterLinear ) type TextureQuad struct { VertexX1 float32 VertexX2 float32 VertexY1 float32 VertexY2 float32 TextureCoordU1 float32 TextureCoordU2 float32 TextureCoordV1 float32 TextureCoordV2 float32 } type TextureId int // A render target is essentially same as a texture, but it is assumed that the // all alpha of a render target is maximum. type RenderTargetId int func OrthoProjectionMatrix(left, right, bottom, top int) [4][4]float64 { e11 := float64(2) / float64(right-left) e22 := float64(2) / float64(top-bottom) e14 := -1 * float64(right+left) / float64(right-left) e24 := -1 * float64(top+bottom) / float64(top-bottom) return [4][4]float64{ {e11, 0, 0, e14}, {0, e22, 0, e24}, {0, 0, 1, 0}, {0, 0, 0, 1}, } }