Awesome
reason-glfw
Cross-platform Reason / OCaml bindings for GLFW - supports Native (OpenGL) and Javascript (WebGL))
Building
esy
is used for building, so if you don't have esy
, install it:
npm install -g esy@0.4.9
esy install
esy build
NOTE: If you've never built with
esy
before, the first compile could take some time - it builds theocaml
compiler as well ascmake
. Incremental builds, though, are extremely fast!
Running
A very simple example project is provided - you can test it out here:
NATIVE:
cd _build/install/default/bin
./test_glfw
(./test_glfw.exe
on Windows)
WEB:
- Start an http-server at
_build/install/default/bin
. (I usenpm install -g http-server
). - Navigate to
index.html
License
This project is licensed under the MIT License - see LICENSE for more details.
Design
For the most part, we strive to have API compatibility for GLFW and OpenGL. This library supports compilation to both native and JSOO targets. In the JSOO case, we emulate the GLFW APIs.
We do have some exceptions:
glfwGetNativeWindow
We wrap the native window access functions in a function glfwGetNativeWindow
. This returns a NativeWindow.t
, where the underlying value is platform specific:
- Windows -
HWND
for the current window. - OSX -
void *
pointer to theNSWindow
. - Linux -
void *
pointer to the X11 Window. - JS -
HTMLCanvasElement
representing the window.
Acknowledgements
- The test texture is provided by LearnOpenGL - an excellent resource for OpenGL!
- This is built on several great libraries, like GLFW, glad, stb_image
- The test image is from @Arahnoid's UVChecker-map repo.