Create packages drivers having actual drivers

This commit is contained in:
Hajime Hoshi 2019-03-25 00:29:56 +09:00
parent 92193b2362
commit 5e38f81462
5 changed files with 20 additions and 19 deletions

View File

@ -19,7 +19,7 @@ import (
"math" "math"
"github.com/hajimehoshi/ebiten/internal/clock" "github.com/hajimehoshi/ebiten/internal/clock"
"github.com/hajimehoshi/ebiten/internal/graphicscommand" "github.com/hajimehoshi/ebiten/internal/drivers"
"github.com/hajimehoshi/ebiten/internal/graphicsdriver" "github.com/hajimehoshi/ebiten/internal/graphicsdriver"
"github.com/hajimehoshi/ebiten/internal/hooks" "github.com/hajimehoshi/ebiten/internal/hooks"
"github.com/hajimehoshi/ebiten/internal/shareable" "github.com/hajimehoshi/ebiten/internal/shareable"
@ -123,7 +123,7 @@ func (c *graphicsContext) Update(afterFrameUpdate func()) error {
op := &DrawImageOptions{} op := &DrawImageOptions{}
switch vd := graphicscommand.Driver().VDirection(); vd { switch vd := drivers.Graphics().VDirection(); vd {
case graphicsdriver.VDownward: case graphicsdriver.VDownward:
// c.screen is special: its Y axis is down to up, // c.screen is special: its Y axis is down to up,
// and the origin point is lower left. // and the origin point is lower left.

View File

@ -15,7 +15,7 @@
// +build darwin,!ios // +build darwin,!ios
// +build !js // +build !js
package graphicscommand package drivers
// #cgo CFLAGS: -x objective-c // #cgo CFLAGS: -x objective-c
// #cgo LDFLAGS: -framework Foundation // #cgo LDFLAGS: -framework Foundation
@ -52,7 +52,7 @@ func init() {
} }
} }
func Driver() graphicsdriver.GraphicsDriver { func Graphics() graphicsdriver.GraphicsDriver {
if isMetalSupported { if isMetalSupported {
return metal.Get() return metal.Get()
} }

View File

@ -14,13 +14,13 @@
// +build !darwin ios js // +build !darwin ios js
package graphicscommand package drivers
import ( import (
"github.com/hajimehoshi/ebiten/internal/graphicsdriver" "github.com/hajimehoshi/ebiten/internal/graphicsdriver"
"github.com/hajimehoshi/ebiten/internal/graphicsdriver/opengl" "github.com/hajimehoshi/ebiten/internal/graphicsdriver/opengl"
) )
func Driver() graphicsdriver.GraphicsDriver { func Graphics() graphicsdriver.GraphicsDriver {
return opengl.Get() return opengl.Get()
} }

View File

@ -18,6 +18,7 @@ import (
"fmt" "fmt"
"github.com/hajimehoshi/ebiten/internal/affine" "github.com/hajimehoshi/ebiten/internal/affine"
"github.com/hajimehoshi/ebiten/internal/drivers"
"github.com/hajimehoshi/ebiten/internal/graphics" "github.com/hajimehoshi/ebiten/internal/graphics"
) )
@ -166,7 +167,7 @@ func (q *commandQueue) Flush() {
nc++ nc++
} }
if 0 < ne { if 0 < ne {
Driver().SetVertices(vs[:nv], es[:ne]) drivers.Graphics().SetVertices(vs[:nv], es[:ne])
es = es[ne:] es = es[ne:]
vs = vs[nv:] vs = vs[nv:]
} }
@ -186,7 +187,7 @@ func (q *commandQueue) Flush() {
} }
if 0 < nc { if 0 < nc {
// Call glFlush to prevent black flicking (especially on Android (#226) and iOS). // Call glFlush to prevent black flicking (especially on Android (#226) and iOS).
Driver().Flush() drivers.Graphics().Flush()
} }
q.commands = q.commands[nc:] q.commands = q.commands[nc:]
} }
@ -232,7 +233,7 @@ func (c *drawImageCommand) Exec(indexOffset int) error {
c.dst.image.SetAsDestination() c.dst.image.SetAsDestination()
c.src.image.SetAsSource() c.src.image.SetAsSource()
if err := Driver().Draw(c.nindices, indexOffset, c.mode, c.color, c.filter, c.address); err != nil { if err := drivers.Graphics().Draw(c.nindices, indexOffset, c.mode, c.color, c.filter, c.address); err != nil {
return err return err
} }
return nil return nil
@ -438,7 +439,7 @@ func (c *newImageCommand) String() string {
// Exec executes a newImageCommand. // Exec executes a newImageCommand.
func (c *newImageCommand) Exec(indexOffset int) error { func (c *newImageCommand) Exec(indexOffset int) error {
i, err := Driver().NewImage(c.width, c.height) i, err := drivers.Graphics().NewImage(c.width, c.height)
if err != nil { if err != nil {
return err return err
} }
@ -478,7 +479,7 @@ func (c *newScreenFramebufferImageCommand) String() string {
// Exec executes a newScreenFramebufferImageCommand. // Exec executes a newScreenFramebufferImageCommand.
func (c *newScreenFramebufferImageCommand) Exec(indexOffset int) error { func (c *newScreenFramebufferImageCommand) Exec(indexOffset int) error {
var err error var err error
c.result.image, err = Driver().NewScreenFramebufferImage(c.width, c.height) c.result.image, err = drivers.Graphics().NewScreenFramebufferImage(c.width, c.height)
return err return err
} }
@ -502,5 +503,5 @@ func (c *newScreenFramebufferImageCommand) CanMerge(dst, src *Image, color *affi
// ResetGraphicsDriverState resets or initializes the current graphics driver state. // ResetGraphicsDriverState resets or initializes the current graphics driver state.
func ResetGraphicsDriverState() error { func ResetGraphicsDriverState() error {
return Driver().Reset() return drivers.Graphics().Reset()
} }

View File

@ -27,8 +27,8 @@ import (
"time" "time"
"github.com/hajimehoshi/ebiten/internal/devicescale" "github.com/hajimehoshi/ebiten/internal/devicescale"
"github.com/hajimehoshi/ebiten/internal/drivers"
"github.com/hajimehoshi/ebiten/internal/glfw" "github.com/hajimehoshi/ebiten/internal/glfw"
"github.com/hajimehoshi/ebiten/internal/graphicscommand"
"github.com/hajimehoshi/ebiten/internal/hooks" "github.com/hajimehoshi/ebiten/internal/hooks"
"github.com/hajimehoshi/ebiten/internal/input" "github.com/hajimehoshi/ebiten/internal/input"
"github.com/hajimehoshi/ebiten/internal/mainthread" "github.com/hajimehoshi/ebiten/internal/mainthread"
@ -99,7 +99,7 @@ func initialize() error {
if err := glfw.Init(); err != nil { if err := glfw.Init(); err != nil {
return err return err
} }
if !graphicscommand.Driver().IsGL() { if !drivers.Graphics().IsGL() {
glfw.WindowHint(glfw.ClientAPI, glfw.NoAPI) glfw.WindowHint(glfw.ClientAPI, glfw.NoAPI)
} }
glfw.WindowHint(glfw.Visible, glfw.False) glfw.WindowHint(glfw.Visible, glfw.False)
@ -604,7 +604,7 @@ func Run(width, height int, scale float64, title string, g GraphicsContext, main
} }
u.window = window u.window = window
if graphicscommand.Driver().IsGL() { if drivers.Graphics().IsGL() {
u.window.MakeContextCurrent() u.window.MakeContextCurrent()
} }
@ -679,7 +679,7 @@ func Run(width, height int, scale float64, title string, g GraphicsContext, main
w = u.nativeWindow() w = u.nativeWindow()
return nil return nil
}) })
graphicscommand.Driver().SetWindow(w) drivers.Graphics().SetWindow(w)
return u.loop(g) return u.loop(g)
} }
@ -834,7 +834,7 @@ func (u *userInterface) loop(g GraphicsContext) error {
// swapBuffers must be called from the main thread. // swapBuffers must be called from the main thread.
func (u *userInterface) swapBuffers() { func (u *userInterface) swapBuffers() {
if graphicscommand.Driver().IsGL() { if drivers.Graphics().IsGL() {
u.window.SwapBuffers() u.window.SwapBuffers()
} }
} }
@ -932,7 +932,7 @@ func (u *userInterface) forceSetScreenSize(width, height int, scale float64, ful
u.window.SetTitle(u.title) u.window.SetTitle(u.title)
} }
if graphicscommand.Driver().IsGL() { if drivers.Graphics().IsGL() {
// SwapInterval is affected by the current monitor of the window. // SwapInterval is affected by the current monitor of the window.
// This needs to be called at least after SetMonitor. // This needs to be called at least after SetMonitor.
// Without SwapInterval after SetMonitor, vsynch doesn't work (#375). // Without SwapInterval after SetMonitor, vsynch doesn't work (#375).
@ -946,7 +946,7 @@ func (u *userInterface) forceSetScreenSize(width, height int, scale float64, ful
glfw.SwapInterval(0) glfw.SwapInterval(0)
} }
} }
graphicscommand.Driver().SetVsyncEnabled(vsync) drivers.Graphics().SetVsyncEnabled(vsync)
u.toChangeSize = true u.toChangeSize = true
} }