用于moderngl的跨平台助手库,使窗口创建和资源加载变得简单
moderngl-window的Python项目详细描述
现代化窗口
ModernGL的支持库 使程序员更高效,并确保跨平台支持。
功能
- 跨平台支持。在Windows10、Linux和MacOSX上测试。 这可以节省用户很多时间,而且往往比大多数人想象的要困难。
- 使用pyglet、pyside2、glfw、sdl2或pyqt5支持基本键盘和鼠标控件,轻松创建moderngl窗口。这些事件被统一到一个系统中,因此我们可以在任何时间点切换到任何窗口。
- 加载二维纹理和纹理阵列
- 作为单个或多个
glsl
文件加载着色器 - 从wavefront/obj、gltf 2.0或stl加载对象/场景
- 支持多个资源目录的资源查找系统
- 一个高度可插入的库,支持自定义加载程序, 资源查找器和窗口。
- 在任何地方键入提示,使代码完成和linting变得轻而易举
我们不想强迫用户使用这个
图书馆。如果你有一个退出项目,只需要纹理加载
只要你能做到这一点
你提供给我们你的moderngl.Context
。
安装
pip install moderngl-window
支持的平台
- [X]窗口
- [X]Linux
- [X]Mac OS X
示例用法
简单的例子打开一个窗口清除每一帧使用红色(颜色)。
importmoderngl_windowasmglwclassTest(mglw.WindowConfig):gl_version=(3,3)def__init__(self,**kwargs):super().__init__(**kwargs)defrender(self,time,frametime):self.ctx.clear(1.0,0.0,0.0,0.0)mglw.run_window_config(Test)
WindowConfig
类是不知道就开始的最简单方法
很多关于这个图书馆的事。有关更高级的用法,请参阅文档
或是例子。
从源设置
我们假设用户知道如何处理vitrualenvs。
# Install the package in editable mode $ pip install -e . # Set up and dev requirements pip install -r requirements.txt pip install -r tests/requirements.txt
运行测试
设置测试时,tox
使用coverate和flake8运行pytest。
pip install -r tests/requirements.txt tox
贡献
无论经验如何,我们都欢迎您的贡献。 毫不犹豫地提交问题,打开部分或完成 拉取请求。
插件
我们对提供新的装载机、窗户等感兴趣。 为了让这些包含在这个库中,我们需要它们 跨平台工作(win10/linux/osx)并且设置起来相当容易。
如果需要手动下载预编译的dll (如SDL2、Glew等)很可能不包括在内, 但如果你认为你的案子应该 包括在内。
如果您创建自己的repo/包,其中包含
这个图书馆,请发表一篇文章,我们会链接回去的。
确保包含支持的平台,安装
说明,如何在moderngl_window
中配置
当然,要清楚而简明地描述
你的包裹提供了。
属性
我们不能从头开始。我们依赖某些包裹 以及使这个项目成为可能的资源。
窗口
- Pyglet(https://github.com/pyglet/pyglet)
- pyglfw(https://github.com/FlorianRhiem/pyGLFW)
- PYSDL2(https://github.com/marcusva/py-sdl2)
- Pyside2(https://wiki.qt.io/Qt_for_Python)
- PYQT5(https://www.riverbankcomputing.com/software/pyqt/intro)
装载机
- 枕头(https://python-pillow.org/)
- pywavefront(https://github.com/pywavefront/PyWavefront)
- trimesh(https://github.com/mikedh/trimesh)
测试和实用程序
- 吡咯(https://github.com/adamlwgriffiths/Pyrr)
- 纽比(https://github.com/numpy/numpy)
- pytest(https://docs.pytest.org/en/latest/)
- 薄片8(https://gitlab.com/pycqa/flake8)
- 覆盖率(https://github.com/nedbat/coveragepy)
- 毒性(https://tox.readthedocs.io/en/latest/)
一些历史记录
这个库中的大多数代码来自demosys-py(有点修改)。
因为demosys-py
是一个框架,我们决定将许多有用的功能分解成
图书馆。框架对用户的吸引力要小得多,如果不这样做就太可惜了
更适合现代用户群。