70 lines
3.2 KiB
Markdown
70 lines
3.2 KiB
Markdown
# sokol-luajit
|
|
A luajit set of ffi wrappers for the excellent sokol framework,
|
|
|
|
- [x] Win64 Binaries - samples and remotery working
|
|
- [X] Linux64 Binaries - samples and remotery working
|
|
- [ ] MacOS Binaries - incomplete. Testing and Fixing ongoing. Expected completion soon.
|
|
|
|
## Sokol
|
|
The repo is based entirely on the brilliant framework here:
|
|
https://github.com/floooh/sokol
|
|
|
|
Some of the source files have been modified to support shared libraries a little better and make the binding of ffi a little easier. There are only small changes, but this is kept in this location - do not use as a source for sokol itself.
|
|
https://github.com/dlannan/sokol
|
|
|
|
The build process builds Win, Linux, Mac OSX, IOS but not Android atm. I need to build a shared library mechansim for this to work well. Thus, the build for it currently fails.
|
|
|
|
## Luajit Sokol
|
|
The only provided main luajit binaries are for win64.
|
|
To run other platforms, please build luajit for your platform and place in the bin/<your platform> directory.
|
|
You will also need to modify the paths at the top of the samples lua scripts to match. I will update this to be more friendly in the future (by using ffi.os).
|
|
|
|
The Wasm part of sokol might not be able to be utilized in this manner. However I do have plans to compile Luajit->wasm and embed sokol generated bytecode. It should be possible, but that is along term goal.
|
|
|
|
## Examples
|
|
I have ported 5 examples from sokol, and will be adding more. These show how the ffi interface can be used.
|
|
|
|
How to use the example. Open a command window or powershell and cd to the examples folder where run_sample.bat is.
|
|
Run the exec like:
|
|
|
|
```run_sample.bat cube_sapp```
|
|
|
|
|
|
Some notes:
|
|
- There are a number of objects that must be created as pointers. In ffi the easiest way to do this is to make an array object of size 1 and this way the handle in lua is a pointer and the object access uses the array indexing.
|
|
- No performance considerations have been taken into account. These are almost direct 1 to 1 mappings of the sokol C samples to luajit samples.
|
|
- pathing is not yet made friendly. Use the run_sample bat file with one of the following parameters:
|
|
|
|
cube_sapp - Simple spinning cube
|
|
|
|
shadow_sapp - Shadowed cube with moving light
|
|
|
|
shapes_sapp - Primitive shapes spinning
|
|
|
|
triangle_sapp - Classic triangle
|
|
|
|
offscreen_sapp - Sphere with render texture torii? spinning on its surface.
|
|
|
|
|
|
Feel free to contribute or post issues/ideas comment. I put this together yesterday, and its very rudimentary atm.
|
|
|
|
Screenshots:
|
|
|
|
sdf exmample
|
|

|
|
|
|
cimgui example
|
|

|
|
|
|
nuklear example
|
|

|
|
|
|
offscreen example
|
|

|
|
|
|
shadow example
|
|
<video src='https://github.com/dlannan/sokol-luajit/blob/main/media/2024-10-07%2011-31-08.mp4' width=180/>
|
|
|
|
shapes example
|
|
<video src='https://github.com/dlannan/sokol-luajit/blob/main/media/2024-10-07%2011-32-21.mp4' width=180/>
|