Hajime Hoshi
138463e219
internal/ui: rename chooseGraphicsDriver -> newGraphicsDriver
2022-06-17 02:40:39 +09:00
Hajime Hoshi
7484df0c5e
internal/graphicsdriver/metal: replace Get with NewGraphics
...
This is a prepartion to return an error when a graphics driver, especially
DirectX, fails to initialize.
Updates #2142
2022-06-17 02:40:35 +09:00
Hajime Hoshi
a6d415ebf2
internal/graphicsdriver/opengl: replace Get with NewGraphics ( #2146 )
...
This is a prepartion to return an error when a graphics driver, especially
DirectX, fails to initialize.
Updates #2142
2022-06-17 02:02:29 +09:00
Hajime Hoshi
44cfb92cee
internal/ui: bug fix: MaximizeWindow before Run caused an unexpected error on Windows
...
Closes #2137
2022-06-13 12:28:20 +09:00
Hajime Hoshi
71a32d2036
internal/ui: pass the canvas element directly instead of an ID
2022-06-11 15:34:17 +09:00
Hajime Hoshi
95628ee5f7
internal/ui: add a unique ID to the canvas for browsers
2022-06-11 15:24:50 +09:00
Hajime Hoshi
83ac234142
internal/ui: bug fix: offscreen images were created too often unexpectedly
2022-06-08 09:26:22 +09:00
Hajime Hoshi
81f91658ff
internal/atlas: refactoring: remove SetVolatile and SetIsolate
...
Pass an image type to NewImage instead.
2022-06-08 01:08:00 +09:00
Hajime Hoshi
d3e3df812a
internal/ui: recreate an offscreen image when isScreenClearedEveryFrame is toggled
...
This is a preparation to remove SetVolatile and SetIsolated in
the atlas package.
2022-06-07 23:16:42 +09:00
Hajime Hoshi
86a0a4154d
internal/atlas: rename SetIsolate -> SetIsolated
2022-06-06 07:17:45 +09:00
Hajime Hoshi
b9012fc6ed
internal/atlas: unify the term 'isolate' and 'independent' to 'isolate'
2022-06-06 00:28:23 +09:00
Hajime Hoshi
2eb4ef1a94
internal/gamepad: give a window from another package instead of GetActiveWindow
...
GetActiveWindow doesn't work on Xbox.
Updates #2084
2022-06-03 18:42:54 +09:00
Hajime Hoshi
0adb0c3860
internal/ui: bug fix: compile error
2022-06-01 02:09:10 +09:00
Hajime Hoshi
9c15bda275
internal/ui: return a null Window on Xbox
...
Updates #2084
2022-06-01 01:26:31 +09:00
Hajime Hoshi
ff868ba39f
internal/ui: skip some functions for Xbox
...
Updates #2084
2022-06-01 00:58:36 +09:00
Hajime Hoshi
dcb5bb47c6
internal/glfw: unify the naming convension for Win32API
2022-06-01 00:48:22 +09:00
Hajime Hoshi
c379873a1f
rename Ebiten -> Ebitengine
2022-05-25 22:48:19 +09:00
Hajime Hoshi
55657e72ae
internal/ui: skip hideConsoleWindowOnWindows in Xbox
...
Updates #2084
2022-05-25 00:13:28 +09:00
Hajime Hoshi
ad5ebae3cc
internal/ui: refactoring
2022-05-22 21:53:42 +09:00
Hajime Hoshi
f67b4cc1d6
internal/glfw: use a pure Go implementation of GLFW
...
This change removes internal/glfw/glfw, that is a DLL loader, and
replaces the usages with internal/glfwwin, that is a pure Go
implementation of GLFW for Windows.
The build tag `ebitenexternaldll` is also removed.
Closes #1764
2022-05-20 22:10:00 +09:00
Hajime Hoshi
eec5ea00ec
internal/glfw: refactoring: use pointers or functions for callbacks
2022-05-20 17:49:46 +09:00
Hajime Hoshi
8d2b08dd14
internal/glfw: refactoring: make callback handlers consistent
2022-05-19 01:49:21 +09:00
Hajime Hoshi
3d00bb1fa2
internal/gamepad, internal/ui: type-cast returning values from Win32APIs just in case
2022-05-11 00:48:44 +09:00
Hajime Hoshi
38a2aa11fd
internal/ui: bug fix: deadlock at Layout with Ebiten's image functions called
...
Closes #2079
2022-04-26 01:12:57 +09:00
Hajime Hoshi
2a5b5b4823
internal/ui: avoid a busy loop in restoreWindow
...
Updates #1826
2022-04-10 17:55:39 +09:00
Hajime Hoshi
3fe1df8b3b
internal/ui: bug fix: ebiten.WindowSize() returned (1,1) when iconified
2022-04-10 16:50:47 +09:00
Hajime Hoshi
aae866350a
internal/ui: bug fix: (*glfw.Window).GetSize() returns (0,0) when iconified
...
Closes #2066
2022-04-10 16:43:03 +09:00
Hajime Hoshi
d3b83dd4ea
internal/ui: refactoring
2022-04-09 18:23:56 +09:00
Hajime Hoshi
fcb7df0a59
internal/ui: bug fix: checking fullscreen on Safari was wrong
2022-04-09 17:25:19 +09:00
Hajime Hoshi
a69be34001
internal/ui: update the error message for fullscreen
2022-04-09 16:55:09 +09:00
Hajime Hoshi
93b4c0d9b1
internal/ui: add comments
...
Updates #1590
2022-04-08 18:40:13 +09:00
Hajime Hoshi
2008916261
internal/ui: bug fix: use the native unit for origWindowPosByOS
2022-04-08 16:43:13 +09:00
Hajime Hoshi
90070c09fe
internal/ui: rename origPos -> origWindowPos
2022-04-08 15:59:16 +09:00
Hajime Hoshi
352d332097
internal/ui: remove redundant comments
2022-04-08 15:51:56 +09:00
Hajime Hoshi
ee124baf60
internal/ui: bug fix: WindowSize returned a wrong value on fullscreen on macOS
...
Closes #2062
2022-04-08 14:57:51 +09:00
Hajime Hoshi
6710808cd1
ebiten: compile shaders at NewShader
...
Closes #2035
2022-04-04 02:52:57 +09:00
Hajime Hoshi
4b0967be42
internal/ui: gofmt
2022-04-04 01:48:15 +09:00
Hajime Hoshi
f1f9f74e5c
internal/ui: bug fix: force to refresh the framebuffer by resizing the window very quickly
...
Closes #2050
2022-04-03 18:43:22 +09:00
Hajime Hoshi
f75a70dc40
internal/graphicscommand: treat []float32 instead of interface{} for uniform variables
2022-04-03 03:51:52 +09:00
Hajime Hoshi
b52a02a178
internal/ui: bug fix: crash when Image.MarkDisposed is called multiple times
...
Closes #2048
2022-04-03 00:21:26 +09:00
Hajime Hoshi
5c7917897c
internal/ui: refactoring: move the logic in gameForUI to context
2022-04-01 22:33:31 +09:00
Hajime Hoshi
9c448d207a
internal/ui: remove an unnecessary alias
2022-04-01 21:17:26 +09:00
Hajime Hoshi
b53cb2acd6
internal/ui, internal/mipmap, internal/graphicscommand: fix a wrong panic message
2022-04-01 20:12:12 +09:00
Hajime Hoshi
8e40b2562e
internal/ui: remove an error returning value from Game.Draw
2022-04-01 19:10:10 +09:00
Hajime Hoshi
ea1c18d124
internal/ui: rename contextImpl -> context
2022-04-01 17:59:44 +09:00
Hajime Hoshi
09a548e055
internal/ui: consider the case when currentMonitor() returns nil
...
Closes #1887
2022-04-01 03:51:28 +09:00
Hajime Hoshi
b5a9ff007c
internal/ui: bug fix: WindowPosition
/SetWindowPosition
didn't work on macOS fullscreen
...
Updates #1590
Closes #2043
2022-03-30 12:10:48 +09:00
Hajime Hoshi
172da82aa7
internal/ui: optimization: reduce u.t.Call
2022-03-30 03:28:18 +09:00
Hajime Hoshi
f2860bebed
internal/ui: remove an unnecessary hack to resize the window
...
The bug (#1606 ) is no longer reproducible even without the hack.
Updates #1606
Updates #1609
2022-03-30 02:48:39 +09:00
Hajime Hoshi
feb70963c6
internal/ui: force to put the window in the initial monitor
...
To make things simple, let's not put the window outside the initial
monitor.
Updates #1351
Closes #1575
2022-03-30 01:56:35 +09:00
Hajime Hoshi
07d6419dc6
internal/ui: bug fix: DeviceScaleFactor was not concurrent-safe before the main loop
...
Updates #1575
Closes #2042
2022-03-29 00:27:44 +09:00
Hajime Hoshi
79e93d3b12
internal/graphicsdriver: introduce the DirectX driver
...
Closes #1007
2022-03-26 20:09:34 +09:00
Hajime Hoshi
9bfbbb6e9e
internal/ui: add graphicsDriverGetter.getDirectX()
...
Updates #1007
2022-03-25 19:43:38 +09:00
Hajime Hoshi
c61be3c532
internal/ui: bug fix: getMetal might return a nil pointer as a non-nil interface
2022-03-24 13:36:53 +09:00
Hajime Hoshi
eeb5687b73
internal/graphicsdriver/metal, internal/graphicsdriver/opengl: change the return type to pointers
...
On second thought, returning pointers is more natural. Handling
nil is a caller's responsibility.
2022-03-24 13:20:36 +09:00
Hajime Hoshi
3074dca670
internal/ui: add the EBITEN_GRAPHICS_LIBRARY environment variable
...
The `ebitengl` build tag is gone instead.
Closes #2007
2022-03-24 02:23:37 +09:00
Hajime Hoshi
85daef7436
internal/ui: bug fix: OpenGL must be used when gomobile-build is used
...
Now the logic of graphicsDriver() is updated, this can return a Metal
graphics driver on iOS even when gomobile-build is used.
This change fixes this issue.
2022-03-23 02:58:56 +09:00
Hajime Hoshi
09b0a0ffaf
internal/ui: refactoring: simplify the selection of graphics libraries
2022-03-23 02:21:53 +09:00
Hajime Hoshi
7e6e022065
cmd/ebitenmobile: support Metal for iOS simulators
2022-03-23 01:34:58 +09:00
Hajime Hoshi
8e6907c64a
internal/ui: reduce the calls of graphicsDriver()
2022-03-22 02:17:41 +09:00
Hajime Hoshi
15548b4c74
internal/ui: add userInterfaceImpl.graphicsDriver
2022-03-22 00:13:22 +09:00
Hajime Hoshi
be1836339b
internal/ui: define the common struct UserInterface for all the environments
...
The existing UserInterface structs became userInterfaceImpl structs.
2022-03-21 23:10:27 +09:00
Hajime Hoshi
99437944bc
internal/ui: remove graphicsDrivre() calls from image.go
2022-03-21 22:49:47 +09:00
Hajime Hoshi
81b9f91f86
internal/graphicscommand: compile shaders lazily
...
With DirectX, the graphics driver cannot be determined until the
main loop starts, as a transparent window cannot be treated with
DirectX so far. On the other hand, compiling shaders requires a
graphics driver as it requires information about Y directions of
NDCs and framebuffers.
This change delays compiling shaders until the graphics commands
are actually executed in the main loop.
Updates #1007
Updates #2019
2022-03-21 21:09:02 +09:00
Hajime Hoshi
b5bb576a58
internal/ui: refactoring: unexport ConvertUniforms
2022-03-21 17:05:50 +09:00
Hajime Hoshi
f4ad12987d
internal/ui: bug fix: compile error with the cbackend tag
2022-03-21 16:59:53 +09:00
Hajime Hoshi
12ce5ae83a
internal/ui: remove the call of graphicsDriver() from the context
2022-03-21 16:48:33 +09:00
Hajime Hoshi
c316aaae72
internal/buffered: simplify the API
2022-03-21 15:19:06 +09:00
Hajime Hoshi
29f7a45ccc
internal/buffer: remove the graphics-driver argument from ReplacePartialRegionPixels
...
This is necessary to remove the graphics driver usage from
(*ebiten.Image).At. And this is necessary to determine the graphics
driver after the window becomes transparent or not.
Unfortunately, it is not obvious to make a transparent window with
DirectX. Then, the determination of a graphics driver should be delayed.
Updates #1007
2022-03-21 05:59:43 +09:00
Hajime Hoshi
14c327c89b
internal/atlas: replace Pixels with At to reduce unnecessary slice allocations
2022-03-20 18:39:17 +09:00
Hajime Hoshi
11ff0ab48c
internal/atlas: refactoring: remove arguments from Pixels
2022-03-20 18:28:57 +09:00
Hajime Hoshi
54b4e87506
internal/restorable: bug fix: ReplacePixels on a sub-image might panic on Android
...
If regions by ReplacePixel are overlapped, this can panics. This can
happen only on Android, where a context lost can happen.
Thus, a sub-image cannot call a direct ReplacePixels. internal/buffer
has to care this.
2022-03-20 18:01:37 +09:00
Hajime Hoshi
696bbc088f
internal/ui: rename variables
2022-03-20 16:51:23 +09:00
Hajime Hoshi
c3e855ab02
internal/buffered: refactoring
2022-03-20 16:44:11 +09:00
Hajime Hoshi
673556d03f
internal/ui: move the error handlings to the ui package
2022-03-20 16:26:26 +09:00
Hajime Hoshi
cc574ad67e
internal/atlas: rename functions: Area -> Region
2022-03-20 04:20:23 +09:00
Hajime Hoshi
b59dd45239
internal/buffered: separate ReplacePixels with the large-area and small-area versions
...
For the large-area version, this doesn't require a graphics driver.
This is necessary to ensure that ReplacePixels never needs a graphics
driver.
2022-03-20 04:13:31 +09:00
Hajime Hoshi
4cbce71b2b
internal/graphicscommand: move the choice of graphics drivers to internal/ui
2022-03-20 02:51:31 +09:00
Hajime Hoshi
1d9982ee6d
internal/ui: move the dependency on graphicscommand from ebiten to ui
2022-03-20 02:00:44 +09:00
Hajime Hoshi
e78f34aa26
internal/ui: add Image
...
This is a preparation for a refactoring. Image will be a proxy to
pass a graphics driver to the lower layer.
2022-03-20 01:39:05 +09:00
Hajime Hoshi
e4fba8b047
bug fix: compile error with Go 1.16 and older
2022-03-08 00:08:53 +09:00
Hajime Hoshi
86ba7719eb
internal/ui: bug fix: use CompareAndSwap
2022-03-07 23:51:10 +09:00
Hajime Hoshi
9c6b7aaca3
internal/ui: catch the error at At correctly
2022-03-05 01:44:59 +09:00
Hajime Hoshi
dd8900ea48
internal/graphicsdriver: refactoring: choose the graphics driver at this package
2022-02-27 23:51:19 +09:00
Hajime Hoshi
99f8e335ee
ebiten: refactoring
2022-02-27 22:21:57 +09:00
Hajime Hoshi
77f765d483
internal/testing: bug fix: considering the case when Y is inverted
...
Closes #2003
2022-02-27 22:14:32 +09:00
Hajime Hoshi
1cb7633ff6
internal/ui: bug fix: atomic.Value.Store cannot be called when a differnet type value is already stored
2022-02-27 17:41:19 +09:00
Hajime Hoshi
566957dc1c
internal/graphicsdriver/metal: invert Y at the vertex shader
...
Instead of using a negative height in the viewport, invert the Y direction
at the vertex shader. This is a little more readable as a negative height
is hacky.
This is a preparation for DirectX 12. DirectX 12's coodination system
is very similar to Metal, but doesn't treat a negative height in its
viewport unfortunately.
Updates #1007
2022-02-27 01:53:03 +09:00
divVerent
ea35296be7
ebiten: provide SetScreenFilterEnabled
, a way to disable the default screen filter ( #1997 )
...
Using FilterNearest rather than filterScreen or FilterLinear speeds up a
Dell E6500 from 23fps->36fps and 27fps->48fps.
Updates #1772
2022-02-24 03:46:27 +09:00
Hajime Hoshi
4949c49cd0
internal/ui: refactoring
2022-02-14 03:39:02 +09:00
Hajime Hoshi
871121abe3
internal/ui: refactoring: remove (*contextImpl).layout
2022-02-14 02:59:02 +09:00
Hajime Hoshi
cffa123405
internal/ui: refactoring: remove sizeChanged for js
...
It is safe to call Layout every frame.
2022-02-14 02:50:32 +09:00
Hajime Hoshi
e2f0878a4c
internal/ui: refactoring: remove sizeChanged
...
It is safe to call Layout every frame.
2022-02-14 02:17:52 +09:00
Hajime Hoshi
e09c1bf8f1
internal/ui: refactoring: remove an error value from runOnAnotherThreadFromMainThread
2022-02-14 00:55:58 +09:00
Hajime Hoshi
ce3f83958e
internal/graphicscommand: rename RunOnMainThread -> RunOnRenderingThread
2022-02-14 00:20:49 +09:00
Hajime Hoshi
b695cb928a
internal/ui: remove RunWithoutMainLoop in non-mobile environments
2022-02-13 22:31:48 +09:00
Hajime Hoshi
82b9f7dc56
ebiten: refactoring: remove setScreenClearedEveryFrame
2022-02-13 20:40:46 +09:00
Hajime Hoshi
0c1c40995c
internal/ui: rename types and members: uiContext -> gameForUI
2022-02-13 20:20:46 +09:00
Hajime Hoshi
29382b424b
internal/ui: refactoring: remove some exposed functions
2022-02-13 20:09:13 +09:00
Hajime Hoshi
08defeeded
internal/ui: move more logics to internal/ui
2022-02-13 20:02:49 +09:00