首页 > 解决方案 > PyQt5:从 QtOpenGLWidget 获取 GL 参数而不先显示

问题描述

是否可以在不先显示小部件的情况下使用 GL 功能glGetString

基本用例将采用这个helloworld,而不是显示小部件,也许我想打印带有 GPU 信息和 GL 版本的命令行使用消息。该脚本当前在显示小部件后已经执行此操作。

在我自己的应用程序中,我有一个 a 的子类,QOpenGLWidget我尝试手动创建 a QOpenGLContext,设置格式并使其成为最新的(有和没有.create()),但这似乎不起作用。子类在显示时似乎工作正常。

任何帮助深表感谢。

更多细节:我是 python 库 vispy 的维护者之一,我正在尝试更新我们的 PyQt5 后端以使用QOpenGLWidget而不是QGLWidget. 如果有人想告诉我们我们做错了什么,拉请求就在这里:https ://github.com/vispy/vispy/pull/1394

标签: pythonopenglqt5pyqt5

解决方案


OpenGL 上下文需要一个“窗口”(确切地需要一个“设备上下文”或“显示器”,具体取决于操作系统)来渲染。该窗口不需要可见,只需要 gl 上下文是当前的。

最简单的方法是在创建窗口时hide()(或不调用)。show()您可以稍后使其可见。


推荐阅读