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支持clojure中的xml和json REST响应   java在Android中通过多个JSON对象循环   java如何创建T类型的新对象   Java应用程序的设计   java使用GridView、适配器和毕加索制作流行电影应用程序   java在映射中交换值   java在同一活动/布局中多次使用同一片段   使用FixedLengthTokenizer使用java Spring FlatFileItemReader   javajavax。xml。ws。WebServiceException:javax。xml。肥皂SOAPException:错误代码QName必须是命名空间限定的!在weblogic server 12c中部署时   当我在构造函数中调用java Autowired属性时,该属性为null   线程“main”java中的linux异常。网BindException:地址已在使用中   java检查两个日期周期是否重叠   有没有办法通过安卓应用程序自动检测java服务器应用程序是否在线?   java检查2D数组中4个连续相同的对角线元素(连接4个游戏)   向Java数组添加数据   java组织。弹性搜索。客户运输NoNodeAvailableException:配置的节点均不可用:[]