LINUX.ORG.RU

QtQuick 2.0: сохранить QQuickItem как QPixmap

 , ,


0

1

Срочно нужен способ сохранения текстурок Item'ов в изображения. В QtQuick 2.0 всё хитро устроено внутри, и на самом деле сделать это не так-то просто. Стандартные элементы работают через QSGNode и наследуются от QQuickItem (не QQuickPaintedItem). Заграбить всё окно целиком легко, но мне нужно сохранять текстуры по отдельности: так, как собственно мы с ними работаем. Пробовал уже делать фон окна прозрачным, но тогда при сохранении в png фон не прозрачный, а чёрный.

layer.format: ShaderEffectSource.Alpha тоже пробовал, ничего не изменилось
получить текстуру через QQuickItem::textureProvider() тоже не получается (всегда возвращается 0 - стандартная реализация)



Последнее исправление: CYB3R (всего исправлений: 2)

Привет, если вдруг сделаешь нечто подобное буду благодарен за код. Собственно сам недавно столкнулся с qtquick и есть кое-какие успехи. Сам тоже опытом поделиться могу. Мой скайп olegkuzenkopro.

ECLIPSE
()

Так, хорошо. Похоже, по-человечески обойтись тут не получится. Есть ли способы заграбить содержимое окна KWin? Или вдруг можно прямо из буферов видеокарты как-нибудь выдрать текстурки?

vladimirsmirnov9
() автор топика
Ответ на: комментарий от vladimirsmirnov9

Оговорка: заграбить содержимое одного окна, без наложений. Композитные менеджеры ведь так их и рисуют, по отдельности?

vladimirsmirnov9
() автор топика
Ответ на: комментарий от vladimirsmirnov9

Такое точно возможно. Только что проверил: моё окно (QQuickView) с прозрачным фоном. Навожу мышку на панель кедовую: рисуется thumbnail окна без наложений, с прозрачным фоном, со всеми применёнными шейдерами.

vladimirsmirnov9
() автор топика
Ответ на: комментарий от vladimirsmirnov9

Можешь запустить приложение в gDEBugger - будет доступ к различным буферам gl-приложения и текстурам в том числе.

Amp ★★★
()
Последнее исправление: Amp (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.