RainbowsixPlayer 2024-01-08 20:47 采纳率: 80%
浏览 6

qopenglwidget来绘制图片

正在学习qt,请问下,我使用Qt openglwidget来绘制图片的时候,感觉内存占用有点大,我之前是使用label来进行绘制的,整个程序运行起来内存占用也就50mb左右,现在就只是加了个widget控件内存就到了100多,这个数值合理吗。我就只是想用gpu来绘制下图片,有没有其他的实现方式。谢谢各位解答

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-08 22:04
    关注

    【相关推荐】



    • 看下这篇博客,也许你就懂了,链接:QOpenglWidget使用示例
    • 除此之外, 这篇博客: OpenGL(3)之Qt窗口(QOpenGLWidget)中的 实例三:上下文配置格式 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
      1. 配置格式:要获取与给定OpenGL版本或配置文件兼容的上下文,或请求深度和模具缓冲区,调用setFormat():
        QOpenGLWidget *widget = new QOpenGLWidget(parent);
        QSurfaceFormat format;
        format.setDepthBufferSize(24);
        format.setStencilBufferSize(8);
        format.setVersion(3, 2);
        format.setProfile(QSurfaceFormat::CoreProfile);
        //必须在显示之前调用
        widget->setFormat(format); 
      
      1. 对于OpenGL 3.0+上下文,当可移植性不重要时,我们可以使用下面这种方式来访问具体版本的的函数功能。
            ...
            void paintGL()
            {
                QOpenGLFunctions_3_2_Core *f = QOpenGLContext::currentContext()- >versionFunctions<QOpenGLFunctions_3_2_Core>();
                ...
                f->glDrawArraysInstanced(...);
                ...
            }
            ...
      
      1. 如上所述,全局地设置请求的格式,以便在应用程序的生命周期中应用于所有窗口和上下文,这样更简单、更健壮。
        int main(int argc, char **argv)
        {
            QApplication app(argc, argv);
      
            QSurfaceFormat format;
            format.setDepthBufferSize(24);
            format.setStencilBufferSize(8);
            format.setVersion(3, 2);
            format.setProfile(QSurfaceFormat::CoreProfile);
            QSurfaceFormat::setDefaultFormat(format);
      
            MyWidget widget;
            widget.show();
      
            return app.exec();
        }
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 1月8日