LINUX.ORG.RU

История изменений

Исправление EXL, (текущая версия) :

Когда я создаю и рисую QLabel, выделяется сколько-то видеопамяти.

Qt-приложение, по умолчанию работающее через иксы, не использует GPU (аппаратно-ускоренную отрисовку) и вот этот твой QLabel не является привычной текстурой, которая хранится в видеопамяти. Наверное корнями QLabel, как и любой другой Qt-виджет, уходит внутрь xcb/xlib/иксов, где и будет являтся каким-то там отрендеренным битмапом. Что-то я сильно сомневаюсь, что этот битмап хранится в VRAM, а не тупо в RAM. Но я могу ошибаться, тут люди знающие архитектуру иксов нужны.

P.S. Qt по hide() не удаляет виджет, а лишь скрывает его с формы, все данные и отрендеренный битмап где-то там должны сохраняться. Даже если бы Qt использовал аппаратное ускорение и QLabel был текстурой, то сам понимаешь, что удалять/создавать каждый раз текстуру по вызову show()/hide() – довольно накладно. Так что ничего там удаляться не должно.

Исправление EXL, :

Когда я создаю и рисую QLabel, выделяется сколько-то видеопамяти.

Qt-приложение, по умолчанию работающее через иксы, не использует GPU (аппаратно-ускоренную отрисовку) и вот этот твой QLabel не является привычной текстурой, которая хранится в видеопамяти. Наверное корнями QLabel, как и любой другой Qt-виджет, уходит внутрь xcb/xlib/иксов, где и будет являтся каким-то там отрендеренным битмапом. Что-то я сильно сомневаюсь, что этот битмап хранится в VRAM, а не тупо в RAM. Но я могу ошибаться, тут люди знающие архитектуру иксов нужны.

P.S. Qt по hide() не удаляет виджет, а лишь скрывает его с формы, все данные и отрендеренный битмап где-то там должны сохранятся. Даже если бы Qt использовал аппаратное ускорение и QLabel был текстурой, то сам понимаешь, что удалять/создавать каждый раз текстуру по вызову show()/hide() – это очень накладно. Так что ничего там удаляться не должно.

Исходная версия EXL, :

Когда я создаю и рисую QLabel, выделяется сколько-то видеопамяти.

Qt-приложение, по умолчанию работающее через иксы, не использует GPU (аппаратную отрисовку) и вот этот твой QLabel не является привычной текстурой, которая хранится в видеопамяти. Наверное корнями QLabel, как и любой другой Qt-виджет, уходит внутрь xcb/xlib/иксов, где и будет являтся каким-то там отрендеренным битмапом. Что-то я сильно сомневаюсь, что этот битмап хранится в VRAM, а не тупо в RAM. Но я могу ошибаться, тут люди знающие архитектуру иксов нужны.

P.S. Qt по hide() не удаляет виджет, а лишь скрывает его с формы, все данные и отрендеренный битмап где-то там должны сохранятся. Даже если бы Qt использовал аппаратное ускорение и QLabel был текстурой, то сам понимаешь, что удалять/создавать каждый раз текстуру по вызову show()/hide() – это очень накладно. Так что ничего там удаляться не должно.