diff --git a/internal/graphics/command.go b/internal/graphics/command.go index a73d8fd73..97bde87e7 100644 --- a/internal/graphics/command.go +++ b/internal/graphics/command.go @@ -26,15 +26,6 @@ import ( "github.com/hajimehoshi/ebiten/internal/graphics/opengl" ) -func glMatrix(m *[4][4]float64) []float32 { - return []float32{ - float32(m[0][0]), float32(m[1][0]), float32(m[2][0]), float32(m[3][0]), - float32(m[0][1]), float32(m[1][1]), float32(m[2][1]), float32(m[3][1]), - float32(m[0][2]), float32(m[1][2]), float32(m[2][2]), float32(m[3][2]), - float32(m[0][3]), float32(m[1][3]), float32(m[2][3]), float32(m[3][3]), - } -} - type Matrix interface { Element(i, j int) float64 } @@ -213,7 +204,7 @@ func (c *drawImageCommand) Exec(context *opengl.Context, indexOffsetInBytes int) return nil } _, h := c.dst.Size() - proj := glMatrix(c.dst.framebuffer.projectionMatrix(h)) + proj := c.dst.framebuffer.projectionMatrix(h) p := programContext{ state: &theOpenGLState, program: theOpenGLState.programTexture, diff --git a/internal/graphics/framebuffer.go b/internal/graphics/framebuffer.go index 8750b2d35..2a15cd0b2 100644 --- a/internal/graphics/framebuffer.go +++ b/internal/graphics/framebuffer.go @@ -18,24 +18,24 @@ import ( "github.com/hajimehoshi/ebiten/internal/graphics/opengl" ) -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) +func orthoProjectionMatrix(left, right, bottom, top int) []float32 { + e11 := 2 / float32(right-left) + e22 := 2 / float32(top-bottom) + e14 := -1 * float32(right+left) / float32(right-left) + e24 := -1 * float32(top+bottom) / float32(top-bottom) - return &[4][4]float64{ - {e11, 0, 0, e14}, - {0, e22, 0, e24}, - {0, 0, 1, 0}, - {0, 0, 0, 1}, + return []float32{ + e11, 0, 0, 0, + 0, e22, 0, 0, + 0, 0, 1, 0, + e14, e24, 0, 1, } } type framebuffer struct { native opengl.Framebuffer flipY bool - proMatrix *[4][4]float64 + proMatrix []float32 } func newFramebufferFromTexture(context *opengl.Context, texture *texture) (*framebuffer, error) { @@ -56,14 +56,14 @@ func (f *framebuffer) setAsViewport(context *opengl.Context) error { return context.SetViewport(f.native, width, height) } -func (f *framebuffer) projectionMatrix(height int) *[4][4]float64 { +func (f *framebuffer) projectionMatrix(height int) []float32 { if f.proMatrix != nil { return f.proMatrix } m := orthoProjectionMatrix(0, viewportSize, 0, viewportSize) if f.flipY { - m[1][1] *= -1 - m[1][3] += float64(height) / float64(viewportSize) * 2 + m[4*1+1] *= -1 + m[4*3+1] += float32(height) / float32(viewportSize) * 2 } f.proMatrix = m return f.proMatrix