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滚动条不会出现在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运行程序读取它正在做什么