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文件。

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

推荐PyPI第三方库


热门话题
java使用字符而不是字符串的意义   部分匹配长度字符串相似性的java正则表达式   java获取构造函数错误(错误:“(”或“[”)   java@Value注释无法正常工作SpringBoot   java hasKey在响应中没有看到字段   java JavaFX,没有JFXButtons和所有   在Log4j2中,是否可以根据键从记录器中筛选出某些键值对?   如何使用Java中Kafka的消息,从特定偏移量开始   java在单击后存储动态按钮的值   java Android编码:ViewRootImpl$CalledFromErrorThreadException。[Noob]   通过FileChooser保存pdf格式会提示在java中出现第二个对话框   用于空文件的java Spring集成文件标记   java我们应该如何编写get方法,以便私有字段不会超出其预期范围?   java Eclipse产品问题,Juno RequireHandle:org。日食e4。果心服务