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中指针的转换

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaREST/SOAP服务技术栈   爪哇的意图。getExtras()。getString“”应用程序在重新打开时崩溃   java如何实现doGeneratemethod?   有CMU Sphinx本地lmtool for java吗?   json如何将字符串传递给。来自java IntelliJS文件中的   java在play1中使用ssl。2.4申请   java在NetBeans中生成匿名侦听器   抛出java错误消息:索引超出界限异常   对于java中当前声明的变量,有没有办法将两个不同对象的输入分开?   JavaEJB与Spring+POJO   java如何使spring boot嵌入式tomcat返回200 OK作为基本url?   java在运行时根据登录用户更改数据库模式   数组如何让Java忽略ArrayList中的负值?   javascript将在JSP文件中编译脚本?   java JPA@OneToMany和@EmbeddedId   rxtx使用java通过串行电缆从PCB板读取数据   java LIBGDX创建音乐时出错