gpt4 book ai didi

c++ - QImage内存不足

转载 作者:行者123 更新时间:2023-11-30 04:08:15 24 4
gpt4 key购买 nike

我对 QGLWidget 进行了子分类,并在其中显示了一张图片。

对于小图像(比如 1200*1000)它工作正常。

对于更大的 (10000 * 6000) 它会崩溃。

MyGLWidget::MyGLWidget(QImage* image, QWidget *parent) : QGLWidget(parent)
{
// ...
_data = *image;
_gldata = QGLWidget::convertToGLFormat(_data); // Crash at this point.
// ...
}

错误:

QImage: out of memory, returning null image
ASSERT: "dst.depth() == 32" in file qgl.cpp, line 2094

我有 8GB 的​​内存,应用程序最多占用。 1GB。

我能做什么?

编辑

好的,假设我用完了 RAM,我该如何捕获这个错误?

try
{
_gldata = QGLWidget::convertToGLFormat(_data);
}
catch(...)
{
qDebug() << "e.what()";
}

看来这不是个例。

最佳答案

您的 RAM 不足。

而且我什至不确定 QImage 能否处理如此大的图像。

converToGLFormat 不会在 GPU 上分配任何东西,它只是将图像转换为 ARGB8888 格式并使用正确的字节顺序,即使其适合通过 glTex(Sub) 上传Image2D,参见 here .在 Qt 5.2 中,如果您正在处理纹理,您还可以考虑使用 QOpenGLTexture,如果有合适的 GPU 功能,它可以让您避免这个转换步骤。

关于c++ - QImage内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21937685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com