iddev5
8d9ca11b45
mach: wasm: add note about vsync support and move VSyncMode to enums.zig
2022-05-25 09:10:13 -07:00
iddev5
488131ecbb
mach: wasm: Adjust width and height for HiDpi/Retina
...
Also implements getFramebufferSize() and getWindowSize() properly.
2022-05-25 09:10:13 -07:00
iddev5
f3e2b8b74c
mach: add a standard way to access platform specific structs
...
This is done by adding platform.zig which is a file providing types like
``CoreType``, ``GpuDriverType`` and ``BackingTimerType``.
2022-05-23 01:03:43 -07:00
iddev5
e5050e856e
mach: Timer: wasm implementation using performance.now()
2022-05-23 01:03:43 -07:00
iddev5
9b7b8be285
mach: Timer: mark all wrapper functions as inline
2022-05-23 01:03:43 -07:00
iddev5
281b1e75c0
mach: wasm: implement getWindowSize
2022-05-22 11:44:21 -07:00
iddev5
f7301cc242
mach: wasm: implement logging and panic handler
2022-05-22 11:44:21 -07:00
iddev5
c8c6dab65b
mach: wasm: initial implementation of Core, added js polyfill and
...
application html
2022-05-22 11:44:21 -07:00
iddev5
ccb1063e3f
mach: wasm: Add initial framework bones
2022-05-22 11:44:21 -07:00
Stephen Gutekanst
a7e7dc800d
mach: expose window size (pixel units, vs. framebuffer subpixel units)
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-05-22 09:12:48 -07:00
iddev5
7bd841a638
mach: free EventNode(s) after poping from queue
2022-05-20 09:14:32 -07:00
iddev5
f1e7c10fbb
mach: remove Action enum and all references to it
2022-05-20 09:14:32 -07:00
iddev5
7486b0ebea
mach: Implement key input handling as event loop
...
This commit changes the former callback based design to handle key input
(GLFW-like) to an event loop based design (SDL-like). This uses a
TailQueue to store the events from inside of standard glfw callbacks.
This Queue is then popped while polling, thereby emulating event loop.
Removes from Engine the function: ``setKeyCallback`` and adds the
function: ``pollEvent`` which may return an event or null.
This change was done for two reasons:
1) Removing dependence of Engine on App. This was a circular dependency
and a genuine bad design.
2) Solve the recent regression due to the same which was (i) preventing
using types declared in Engine.zig and (ii) preventing usage of
multiple source files in an application.
Currently only key press and release events are implemented as these are
the ones currently used in examples.
2022-05-20 09:14:32 -07:00
iddev5
3bb45c75a1
mach: introduce cross platform Timer abstraction
...
This Timer uses std.time.Timer as backing timer in native platforms, and
will use custom timers for special platforms (wasm, android?, ios?).
Unlike std.time.Timer, its primary API is focused on floats. Also meant
to provides some convenient functions alongside base ones.
Follows std.time.Timer API, but methods by default return f32 i.e
non-precise variant with precise variants available returning u64.
2022-05-17 23:56:41 -07:00
iddev5
657091ed65
mach: Reorganised native backend files, moved structs and fixed circular
...
dependency
2022-05-15 10:36:08 -07:00
iddev5
8b46f46cf8
mach: Create binding methods for all glfw methods in use and update
...
examples
2022-05-13 16:17:18 -07:00
iddev5
5396769227
mach: implement all glfw -> mach key mappings
2022-05-09 08:08:01 -07:00
iddev5
71b7473ee7
mach: implement key press/release callback
2022-05-09 08:08:01 -07:00
iddev5
7a392b2780
mach: Add enums for keys and actions
2022-05-09 08:08:01 -07:00
iddev5
8904536632
mach: comptime interface-like implementation of engine cores
2022-05-01 17:07:29 -07:00
iddev5
5c984d9795
mach: finalizing changes for now
2022-04-29 12:48:47 -07:00
iddev5
5249e72408
example: finalize triangle example to new API
2022-04-29 12:48:47 -07:00
iddev5
60fd89ec45
mach: make App.options optional
2022-04-29 12:48:47 -07:00
iddev5
7598c2d7b8
mach: Enable App.resize() and verify if all necessary functions are exported by App
2022-04-29 12:48:47 -07:00
iddev5
2aedc4ca01
mach: implement App struct in terms of unified entry point
2022-04-29 12:48:47 -07:00
iddev5
d99359421e
mach: begin unified entry point interface
2022-04-29 12:48:47 -07:00
d3m1gd
ce1aeafa84
choose first adapter ( #251 )
...
Related to hexops/mach#216
Co-authored-by: d3m1gd <mach+d3m1gd@users.noreply.github.com>
2022-04-22 18:50:42 -07:00
iddev5
a922b4b29b
mach: set error message to be shown on glfw error
...
This uses glfw.setErrorCallback to set a global callback in mach's App
which would work across all mach applications
2022-04-17 11:50:33 -07:00
Stephen Gutekanst
305c446aa2
add delta time calculation for frame-rate independent movement
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-04-17 10:06:56 -07:00
Stephen Gutekanst
5883a50d92
add high-level vsync modes
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-04-16 11:52:47 -07:00
Silver
614322edc7
gpu: convert Texture.Usage to packed struct
2022-04-08 11:03:00 -07:00
Silver
adf5332969
app: add resize callback function
2022-04-08 11:03:00 -07:00
Stephen Gutekanst
49f80de6ab
add higher-level app library
...
Fixes hexops/mach#190
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-04-05 00:16:51 -07:00
Stephen Gutekanst
2bb3b934e1
glfw: add terminate function
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2021-07-16 15:24:45 -07:00
Stephen Gutekanst
7fcd051870
add main engine library + minimal glfw linking example
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2021-07-06 20:58:46 -07:00