currently implemented:
- glfw:
some% # joinked from jlfw - openGL:
microscopic% - ImGui:
enough-to-have-fun-with-but-not-ENOUGH-enough% - ImGuiColorTextEdit:
you-can-instantiate-and-render-ONE-paste-some-text--edit-it-and-copy-it-back-out-again%
you (as a dev, looking to compile this on your own machine to make silly user interfaces) to remember to run git submodule update --init in case your git is to old to properly check out the repo (or idfk why it does that sometimes..)~
- imgui: v1.91.4 # below text editor extension is blocking me from upgrading
- ImGuiColorTextEdit: master :fingers-crossed :hj
- glfw: master
- janet: master
- jpm: master
- spork: master
make sure you have all libraries installed with development headers:
- check the glfw documentation (/glfw/docs/compile.md) for build instructions and dependencies.
in glfw subdirectory: ( utterly optional btw :) (i think, though reviewing this and remembering the different machines i did this on i remember at least once thinking something like "so c-making glfw ISNT optional" perhaps because during the initial cmake step some file is generated or rather copied into the include path i specify in project.janet, not sure)~
mkdir build
cd build
cmake -S ../ -B ./
cmake --build ./
the include path of glfw to your includepath for the next step to work, you may also just install libglfw3-dev
you should compile and run the following imgui example application to make sure everything looks and feels the same in inku and imgui:
- /imgui/examples/example_glfw_opengl3/
(to me this is the lowest bar to entry for you into helping yourself to me helping you helping me helping you to get joinkyloinky to chooch on your box :3 if this example app compiles but the one made with janet doesnt, and you havent messed with the submodules' settings or sources: lets talk :)
in example directory:
make
you will also require janet (https://github.com/janet-lang/janet) on your path and jpm (https://github.com/janet-lang/jpm)
once you have prepared your system and can run the imgui example app, you may run jpm run gen and then jpm test in the
a native binary with a minimal test app will be put into the build folder along a module file that can be installed using jpm install
my main reason to attempt the wgpu implementation was the future proofing novelty factor. i dont remember why building the wgpu example or dawn failed on this machine. but since vulkan is (abstraction wise speaking) close "enough" to wgpu and metal and also since... well i dont care much about helping any company that doesnt pay me for my work, frankly and quite generally put: fuck capitalism. and yet i live in it, how curious.
right. pardon me turning this into a blog post, but im trying to give you some context for my thought process...
anyway, using code from another, earlier work of mine: jlfw, i started binding the vulkan implementation because of above reasons, when it occured to me: while imgui handles most of the heavy lifting by letting me access its show-demo-widget function, openGL would not have all those neat abstractions, that vulkan is beckoning with, in favor of the most general cases like clearing the screen and drawing something another library cooked up while this janet binding tickled it in the background.
messing with uis can be fun but the tools can be clunky and scary, so not messing with native api can be a bit freeing, of course opengl is still close enough to the metal of a systems api to make this a very serious endeavour despite all my :3 and uwu and general fuckery <3
if you are idling along on your janet-lang boat already and the imgui example app compiles all good:
jpm install https://github.com/kamisori/inku
then
(use joinkyloinky) for the glfw + opengl3 implementation
example uses of what was bound so far can be found in the test directory in this repo
coming soonish:
(use joinkyvoinky) for the glfw + vulkan implementation
Credits to imgui's ocornut for making the most awesome ui implementation out there (for use cases//)
and the other projects too :3
pls bear with my unprofessionality in favor of conviviality, but do express concerns if you have any.
otherwise, this tree is mine to piss on and bark at, if you want to join in and help the tree grow, give a yelp :3