pyprojector是一个用于渲染的异步窗口。
pyprojector的Python项目详细描述
pyprojector
pyprojector是一个python 3模块,它创建一个与解释器无关的窗口。紧密的循环,长的计算常常阻止我们更新窗口,使用Python线程增加了更多的复杂性和起伏的渲染体验。
pyprojector是如何工作的?
一个窗口是在一个新的操作系统线程上创建的,winapi负责这个窗口。
该窗口有两个带有共享对象的opengl上下文。
用户可以使用分配给当前线程的opengl上下文来使用opengl渲染任意图像。window.update(framebuffer=...)
方法接受一个framebuffer
,并将其内容复制到backbuffer中。backbuffer将在窗口需要重画时使用。
功能
- 用户可以使用最少的api创建和更新窗口。
- 渲染的帧将快速复制到由另一个线程维护的backbuffer中。
- 用户可以根据窗口的可见性进行渲染。
- 隐藏窗口的性能几乎为零。
- 用户不负责更新窗口以避免脏帧。
- 窗口可以在系统托盘中显示/隐藏。
- 关上窗户就是把窗户藏起来。
- 屏幕截图可以用
ctrl+s
保存。 - 窗口中的
ctrl+c
会引发KeyboardInterrupt
。 - 可以使用
window.screenshot()
以编程方式拍摄屏幕截图。 - 程序可以用
ctrl+shift+q
停止。 - 窗口仅在必要时刷新。
- 内置FPS限制器。
示例
importpyprojectorwnd=pyprojector.window((840,480),__file__,fps=60)fbo=...# OpenGL Framebuffer ObjectwhileTrue:# the user's loop# do long calculation, train AI, run gyms, ...ifwnd.visible:# render into fbo# pass fbo to the windowwnd.update(fbo)
有关更多示例,请访问examples。
确认
此项目使用miniz
保存PNG文件。