QGLWidget在QT中如何工作?
令人惊讶的是,我将 QWidget 切换为 QGLWidget,现在我的 QPainter::drawImage 调用速度快了 5 倍。除了小部件类型之外,我没有更改其他任何内容。这如何使 QPainter 调用执行得更好?我很高兴它有效,但我只是不明白它是如何工作的。有什么想法吗?
谢谢。
Amazingly, i switched a QWidget to be a QGLWidget and now my QPainter::drawImage calls are 5x faster. I changed nothing else, except the widget type. How does that make QPainter calls perform better? I'm glad it works, but i just do not understand how. Any ideas?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
QGLWidget 使用您系统上可用的 OpenGL 实现,它可能是硬件加速的。这取决于您的系统。 Qt 小部件可以使用不同的 QPaintEngine 进行渲染。
您甚至可以通过尝试使用参数 -graphicssystem 运行应用程序来尝试更改整个图形系统以使用 OpenGL。目前在 Qt for Linux Embedded 中无法完成此操作。例如,您可以尝试运行animatedtiles 示例的差异。
请注意,这并不一定意味着性能会比光栅画家更好。这取决于系统的OpenGL实现,如果只是软件,性能可能会更差。
The QGLWidget uses the OpenGL implementation you have available on your system, which may be hardware accelerated. It depends on your system. Qt widgets can be rendered using different QPaintEngine's.
You can even try to change the entire graphics system to use OpenGL by trying to run an application with the parameter -graphicssystem. This cannot be done currently in Qt for Linux Embedded. You can try the difference running the animatedtiles example for instance.
Note that this doesn't necessarily mean performance will be better than with the raster painter. It depends on the OpenGL implementation of the system, if it is only software, performance may be even worst.
它使用 OpenGL 来渲染其内容。
It uses OpenGL for rendering its content.
如果它使用 OpenGL,它可能也使用硬件加速
If it's using OpenGL, it's probably also using hardware acceleration