【问题标题】:Big QPixmaps crashes with OpenGLBig QPixmaps 与 OpenGL 崩溃
【发布时间】:2010-10-27 23:18:54
【问题描述】:

我正在编写一个有很多图像的 QGraphicsView。但是当我显示分辨率为 8528 x 1128 像素的 JPEG(全景图像)时,QGraphicsPixmapItem 不会呈现。它只显示一个黑色方块。 “正常”尺寸的图像呈现良好。我没有尝试找到问题发生的大小的“魔术限制”。

在我装有 Ubuntu 10.10 x64 的笔记本电脑上,它还会损坏显卡驱动程序并重新启动 Gnome 会话!

如果我禁用 OpenGL,一切正常。

为什么?有什么我可以做的吗?

我发现另一个有非常相似的问题:http://www.qtforum.org/article/34238/really-strange-problem-with-qgraphicsview-and-opengl.html

【问题讨论】:

    标签: qt opengl qgraphicsview


    【解决方案1】:

    确保在您的 OpenGL 实现中返回大于 8528 的值:

    GLint texSize;
    glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize);
    

    如果不是这样,您将不得不求助于某种平铺渲染系统,以便您可以将所有图像数据放入小于最大尺寸的纹理中。

    【讨论】:

    • 只是为了强调这一点 - 您远远超出了 GL 纹理的安全限制,以及使用非正方形、非二次方维度。所有这些因素都会减少您可能使用的硬件和 GL 驱动程序。好消息是,由于您已经在使用 QGraphicsView,因此(在 CPU 上)将巨大的图像分割成小块,并为每个图块创建单独的图形项,应该很容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多