Hey, nice. Lots to learn still, but this is working.
This commit is contained in:
parent
eb25270d34
commit
740211ed4c
3 changed files with 53 additions and 32 deletions
15
config.nims
15
config.nims
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
when defined(emscripten):
|
||||
when defined( emscripten ):
|
||||
--define:GraphicsApiOpenGlEs2
|
||||
# --define:NaylibWebResources
|
||||
# switch("define", "NaylibWebResourcesPath=resources")
|
||||
|
|
@ -8,6 +8,12 @@ when defined(emscripten):
|
|||
--os:linux
|
||||
--cpu:wasm32
|
||||
--cc:clang
|
||||
when defined( windows ):
|
||||
--clang.exe:emcc.bat # Replace C
|
||||
--clang.linkerexe:emcc.bat # Replace C linker
|
||||
--clang.cpp.exe:emcc.bat # Replace C++
|
||||
--clang.cpp.linkerexe:emcc.bat # Replace C++ linker.
|
||||
else:
|
||||
--clang.exe:emcc
|
||||
--clang.linkerexe:emcc
|
||||
--clang.cpp.exe:emcc
|
||||
|
|
@ -17,11 +23,12 @@ when defined(emscripten):
|
|||
--panics:on
|
||||
--exceptions:goto
|
||||
--define:noSignalHandler
|
||||
--passL:"-03"
|
||||
--passL:"-Oz" # Production build
|
||||
# --passL:"-O0 -gDebug -gsource-map" # Debug build
|
||||
# --passL:"-s EXPORT_NAME=Test1Module"
|
||||
# --passL:"-s MODULARIZE=1"
|
||||
--passL:"-s ASYNCIFY" # async support
|
||||
# --passL:"-s JSPI" # async support
|
||||
--passL:"-o index.html"
|
||||
# --passL:"--shell-file minshell.html"
|
||||
--passL:"-o build/index.html"
|
||||
--passL:"--shell-file minshell.html"
|
||||
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@ task make, "Native build":
|
|||
exec "mkdir -p build && nim c --outdir:build -d:release --opt:speed src/nim_wasm_test.nim"
|
||||
|
||||
task makeweb, "Emscripten build":
|
||||
exec "mkdir -p build && nim c --outdir:build -d:emscripten src/nim_wasm_test.nim"
|
||||
exec "mkdir -p build && nim c -d:emscripten -d:release src/nim_wasm_test.nim"
|
||||
|
||||
task runweb, "Run a local webserver for the wasm build":
|
||||
exec "nimhttpd -H:'Cross-Origin-Opener-Policy: same-origin' -H:'Cross-Origin-Embedder-Policy: require-corp'"
|
||||
exec "nimhttpd -H:'Cross-Origin-Opener-Policy: same-origin' -H:'Cross-Origin-Embedder-Policy: require-corp' build/"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,31 +4,45 @@ import std/os
|
|||
import raylib
|
||||
|
||||
# Emscripten specific imports
|
||||
proc emscripten_set_main_loop(f: proc() {.cdecl.}, a: cint, b: bool) {.importc.}
|
||||
proc emscripten_sleep(a: cuint) {.importc.}
|
||||
proc emscripten_set_main_loop( f: proc() {.cdecl.}, a: cint, b: bool ) {.importc.}
|
||||
proc emscripten_sleep( a: cuint ) {.importc.}
|
||||
|
||||
var camera = Camera(
|
||||
position: Vector3(x: 5, y: 5, z: 10), # Camera position
|
||||
target: Vector3(x: 0, y: 0, z: 0), # Camera target it looks-at
|
||||
up: Vector3(x: 0, y: 1, z: 0), # Camera up vector (rotation over its axis)
|
||||
fovy: 45, # Camera field-of-view apperture in Y (degrees)
|
||||
projection: Perspective # Defines projection type, see CameraProjection
|
||||
)
|
||||
|
||||
proc main() =
|
||||
proc mainLoop() {.cdecl.} =
|
||||
defer: closeWindow()
|
||||
|
||||
initWindow( 600, 400, "raylib nim playground" )
|
||||
initWindow( 800, 600, "raylib nim playground" )
|
||||
|
||||
while not windowShouldClose():
|
||||
if defined(emscripten):
|
||||
|
||||
beginDrawing();
|
||||
clearBackground( RAYWHITE );
|
||||
beginMode3D( camera );
|
||||
drawGrid( 10, 1.0f );
|
||||
endMode3D();
|
||||
|
||||
var col = if isCursorOnScreen(): BLUE else: GRAY
|
||||
drawText( "OH SNAP IT'S WORKING", 10, 10, 20, col );
|
||||
endDrawing();
|
||||
|
||||
if defined( emscripten ):
|
||||
emscripten_sleep 10
|
||||
echo "wasm: hi"
|
||||
else:
|
||||
sleep 10
|
||||
|
||||
main()
|
||||
echo "native: hi"
|
||||
|
||||
|
||||
if defined( emscripten ):
|
||||
emscripten_set_main_loop( mainLoop, 0, true );
|
||||
else:
|
||||
mainLoop()
|
||||
|
||||
|
||||
# when defined(emscripten):
|
||||
# # Emscripten can't block so it will call this callback instead.
|
||||
# emscripten_set_main_loop(main_loop, 0, true);
|
||||
# else:
|
||||
# # When running native code we can block in an infinite loop.
|
||||
# while windowShouldClose(window) == 0:
|
||||
# mainLoop()
|
||||
# # If you get ESC key quit.
|
||||
# if window.getKey(KEY_ESCAPE) == 1:
|
||||
# window.setWindowShouldClose(1)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue