moderngl:python 3的高性能渲染

moderngl的Python项目详细描述


preview

现代化l

pip install moderngl

功能

  • 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)

构建

buildbuild

python setup.py build_ext --inplace

常见问题解答

moderngl比pyopengl快吗?

在某些情况下,{ 1 } }是的,强函数的核心函数是用C++编写的,OpenGL函数是连续调用的,所以这些调用一起算作一个Python函数调用。

使用的是什么版本的opengl?

大多数调用只需要opengl 3.3,但子例程和计算着色器需要opengl 4.0opengl 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

代码质量

代码使用pep8flake8prospectorpylint

社区

贡献者

以及many others

谢谢你!

欢迎捐款。(请将自己添加到列表中)

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

推荐PyPI第三方库


热门话题
java如何在表被注释到配置之前获取表的元数据?   java滚动条不会出现在JList上   java JOGL监视器GPU内存   java为什么要使用RecyclerView onDraw延迟   java定制Oppo Reno 2 Z CPH1951(手机型号)的固件(闪存文件)   java自定义线程池执行器   java如何解决发布版本中重复的jar条目[com/安卓/volley/R.class]?   java如何使用Bukkit API触发事件?   java在blazemeter jmeter RTE插件中使用ctrl+w输入   C#/Visual Studio的java JDT等价物   java为什么当maxread值很大而收到的消息数量很小时,卡夫卡消费者会无限期消费?   java游戏2。x:包含模板列表的绑定模型   带压缩的java日志旋转   运行时。exec用java运行程序读取它正在做什么