A luajit set of ffi wrappers for the excellent sokol framework,
Go to file
2024-10-14 23:28:29 +10:30
bin added png loader example. 2024-10-14 23:28:29 +10:30
examples added png loader example. 2024-10-14 23:28:29 +10:30
ffi added png loader example. 2024-10-14 23:28:29 +10:30
lua added new libs. stb and updated platforms with ios64 2024-10-14 21:44:00 +10:30
tools added new libs. stb and updated platforms with ios64 2024-10-14 21:44:00 +10:30
LICENSE Initial commit 2024-10-08 17:54:53 +10:30
README.md updated readme 2024-10-08 19:23:28 +10:30

sokol-luajit

A luajit set of ffi wrappers for the excellent sokol framework,

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/ 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.