version: 0.1.0
Exports getGraphic2Module(), getGraphic3Module() and getAudioModule().
The first two hand back the same instance seen from both ends of the
inheritance chain — one implementation, no risk of the two views drifting.
| target | artefact | use |
|---|---|---|
raylib_impl |
raylib_impl.dylib |
the plugin, what ModuleManager::Load() opens |
raylib_impl_static |
libraylib_impl.a |
linked in, brings its include dirs and the platform frameworks |
Neither follows BUILD_SHARED_LIBS : a plugin turned into a .a would fail
at runtime with an obscure message. Pick by target name.
build/raylib_impl_demo_dynamic # dlopen at runtime
build/raylib_impl_demo_static # linked in, no dlopen at alldynamic takes a dll path in argv[1], so the same binary runs any vendor :
build/raylib_impl_demo_dynamic ../../sfml_impl/build/sfml_impl.dylib ../../sfml_impl/assets- No event queue at all, only state queries refreshed once a frame by
PollInputEvents()insideEndDrawing().IsKeyPressedcompares two arrays, so nothing is consumed and every read is idempotent — this is the behaviour the contract asks for, and the one sfml was aligned on. HerepollEvent()has nothing to drain and answerstruealways, since raylib cannot tell whether anything happened. IsMusicStreamPlayingcannot tell "paused" from "stopped", soRayMusictracks the three states itself.SeekMusicStreamwraps past the end (115s on a 109s track gave 6s), sosetTimeclamps.PlaySoundoverlaps by default ; the contract wants a restart.- No modifier mask on events : rebuilt from
IsKeyDown. - No positional audio :
setPositionstores and keeps playing.
UpdateModelAnimation writes the pose into the mesh's own vertex buffer, so
two RayModel sharing one RayMesh cannot sit on different animation
frames. Sharing position, rotation and size works.
InitWindow segfaults inside raylib when the display is asleep or locked —
GLFW finds no monitor and raylib dereferences null GL pointers. On CI, use
xvfb-run.