raylib的python cffi绑定
raylib的Python项目详细描述
raylib 2.5的python绑定
新的cffi api静态绑定。比cTypes更快、更少的bug和更容易维护。
广告
RetroWar: 8-bit Party Battle现在出去了。击败多达15个你的朋友在80年代的比赛启发复古迷你游戏。
安装
windows 10(64位):python 3.6-3.7
macos:python 3.5-3.7
linux(ubuntu 16.04+):python 3.5-3.7
我们发布了一个静态链接的raylib库,从pypi安装。
pip3 install raylib
如果您是不同版本的python,或者是具有不兼容库的linux 然后您可以只使用动态绑定,否则您将不得不从源代码构建。下载,编译 安装raylib 2.5,然后
cd raylib/static
python3 build_linux.py
使用
raylib.static
我们的目标是尽可能使用与CFFI允许的原始C相似的数据。有一些不同之处 你可以在例子中看到。如何使用请参见test_static.py和examples/*.py。
from raylib.static import *
InitWindow(800, 450, b"Hello Raylib")
SetTargetFPS(60)
camera = ffi.new("struct Camera3D *", [[18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0])
SetCameraMode(camera[0], CAMERA_ORBITAL)
while not WindowShouldClose():
UpdateCamera(camera)
BeginDrawing()
ClearBackground(RAYWHITE)
BeginMode3D(camera[0])
DrawGrid(20, 1.0)
EndMode3D()
DrawText(b"Hellow World", 190, 200, 20, VIOLET)
EndDrawing()
CloseWindow()
raylib.pyray
静态绑定的包装器。使名称变为snakecase并自动将字符串转换为字节。见test_pyray.py。
from raylib.pyray import PyRay
from raylib.colors import *
pyray = PyRay()
pyray.init_window(800, 450, "Hello Pyray")
pyray.set_target_fps(60)
camera = pyray.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0)
pyray.set_camera_mode(camera, pyray.CAMERA_ORBITAL)
while not pyray.window_should_close():
pyray.update_camera(pyray.pointer(camera))
pyray.begin_drawing()
pyray.clear_background(RAYWHITE)
pyray.begin_mode_3d(camera)
pyray.draw_grid(20, 1.0)
pyray.end_mode_3d()
pyray.draw_text("Hello world", 190, 200, 20, VIOLET)
pyray.end_drawing()
pyray.close_window()
raylib.dynamic
除了api静态绑定之外,我们还有cffi abi动态绑定,以避免编译c扩展模块。 以前在动态绑定和cTypes绑定方面出现过一些奇怪的失败,而且这些失败通常是无声的。 所以你都不知道。而且静态绑定应该更快。所以我推荐静态的…
但是动态绑定有一个很大的优势,即不需要编译任何东西就可以安装。你只需要一个raylib dll, 我们为windows/mac/linux提供。
如何使用请参见test_dynamic.py。
richlib
A simplified API for Raylib for use in education and to enable beginners to create 3d games
测试平台
- MacOS 10.12.6-Python 3.7
- ubuntu 18.04 LTS-Python3.6
- Windows 10(64位)-Python 3.7
需要帮助
- 将更多示例从c转换为python
- 在更多平台上测试和构建
- 整理mac/win的二进制轮分布并从linux的源代码分布编译
- 自动处理pyray中指针的转换