moderngl:python 3的高性能渲染
moderngl的Python项目详细描述
现代化l
pip install moderngl
- Documentation
- Examples
- ModernGL on Github
- ModernGL on PyPI
- ModernGL Discord Server
- moderngl_window(创建窗口,加载资源,…)
功能
- GPU加速高质量图形
- 以更少的麻烦渲染现代opengl场景
- 比pyopengl简单快捷
- 可以在没有窗口的情况下进行渲染
- 100%Python
示例用法
>>>importmoderngl>>>ctx=moderngl.create_standalone_context()>>>buf=ctx.buffer(b'Hello World!')# allocated on the GPU>>>buf.read()b'Hello World!'
有关完整示例,请访问Examples。
易于与枕头和纽米一起使用
>>>img=Image.open('texture.jpg')>>>ctx.texture(img.size,3,img.tobytes())<Texture:1>
>>>ctx.buffer(np.array([0.0,0.0,1.0,1.0],dtype='f4'))<Buffer:1>
与pyopengl相比
使用pyopengl,使用原始的opengl api,您必须编写三行代码 完成一项简单的任务,如绑定vbo:
vbo1=glGenBuffers(1)GL.glBindBuffer(GL_ARRAY_BUFFER,vbo1)GL.glBufferData(GL_ARRAY_BUFFER,b'Hello World!',GL_STATIC_DRAW)vbo2=glGenBuffers(1)GL.glBindBuffer(GL_ARRAY_BUFFER,vbo2)GL.glBufferData(GL_ARRAY_BUFFER,b'\x00'*1024,GL_DYNAMIC_DRAW)
使用moderngl,每个vbo只需要一行代码就可以实现相同的功能 结果:
vbo1=ctx.buffer(b'Hello World!')vbo2=ctx.buffer(reserve=1024,dynamic=True)
构建
python setup.py build_ext --inplace
常见问题解答
moderngl比pyopengl快吗?
在某些情况下,{ 1 } }是的,强函数的核心函数是用C++编写的,OpenGL函数是连续调用的,所以这些调用一起算作一个Python函数调用。使用的是什么版本的opengl?
大多数调用只需要opengl 3.3,但子例程和计算着色器需要opengl 4.0和opengl 4.3
我的旧电脑支持吗?
opengl 3.3于2010年2月发布。使用最新的驱动程序您将能够使用大多数moderngl功能,甚至在集成显卡上。(不,计算着色器不起作用)
我在哪里可以使用moderngl?
任何支持opengl的地方。moderngl也可以使用standalone_context进行渲染。渲染到窗口只需要有效的opengl上下文。
moderngl能创建一个窗口吗?
no,但我们提供了一个实用程序库moderngl_window,用于创建窗口和 资源加载非常简单。
对pyopengl使用moderngl的限制?
所有必需的调用都(或可以)在moderngl中实现。但是,您可以与来自pyopengl的moderngl对象交互。如果缺少什么,请写一个issue或引发一个PR。
支持的平台
- [X]窗口
- [X]Linux
- [X]麦克
从源安装
在ubuntu上安装源代码
apt-get install python3-dev libgl1-mesa-dev libx11-dev python3 setup.py install
构建狮身人面像文档
pip install -r docs/requirements.txt python setup.py build_sphinx
运行测试
pip install -r tests/requirements.txt pytest tests
Some of the tests may be skipped when the supported OpenGL version is below the requirements of the given test.
无头渲染
apt-get install xvfb aliasxpy='xvfb-run -s "-screen 0 1x1x24" python3' xpy -m ModernGL
代码质量
代码使用pep8、flake8、prospector和pylint
社区
贡献者
- Szabolcs Dombi
- SimLeek
- Aljenci
- MinchinWeb
- Silexstudio
- stuaxo
- Tomi Aarnio
- Joshua Reibert
- Einar Forselv
- Jonathan Hartley
谢谢你!
欢迎捐款。(请将自己添加到列表中)