Big QPixmaps се срива с OpenGL

Програмирам QGraphicsView, който има много изображения. Но когато показвам JPEG с разделителна способност 8528 x 1128 px (панорамно изображение), QGraphicsPixmapItem не се изобразява. Той просто показва черен квадрат. Изображения с "нормален" размер се показват добре. Не съм се опитвал да намеря "магическата граница" за това на какви размери възниква проблемът.

На моя лаптоп с Ubuntu 10.10 x64 той също срива драйвера на графичната карта и рестартира сесията на Gnome!

Всичко работи добре, ако деактивирам OpenGL.

Защо? Мога ли да направя нещо?

Намерих друг с много подобен проблем: http://www.qtforum.org/article/34238/really-strange-problem-with-qgraphicsview-and-opengl.html


person Knuto    schedule 27.10.2010    source източник


Отговори (1)


Уверете се, че това връща нещо по-голямо от 8528 във вашата реализация на OpenGL:

GLint texSize;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize);

Ако не стане, ще трябва да прибегнете до някаква система за рендиране с плочки, за да можете да поберете всичките си данни за изображение в текстури, по-малки от максималния размер.

person genpfault    schedule 27.10.2010
comment
Само за да подсиля тази точка - вие далеч надхвърляте безопасните граници за GL текстура, както и използвате неквадратно измерение, което не е степен на две. Всички тези фактори намаляват хардуера и GL драйверите, върху които е вероятно да работите. Добрата новина е, че тъй като вече използвате QGraphicsView, разделянето на вашето огромно изображение на части (на процесора) и създаването на отделни графични елементи за всяка плочка трябва да е лесно. - person James Turner; 27.10.2010