Название: Как применить шейдер к объекту painter Отправлено: abdulgalimov от Октябрь 28, 2015, 13:29 Приветствую!
Подскажите новичку, как мне применить шейдер к объекту QPainter. Т.е. я что то там рисую в painter-е, и в какой то момент хочу наложить на это, нарисованное, новый шейдер, например чтобы сделать нарисованное черно белым. Я новичок в мире OpenGL, Qt и C++, поэтому не ругайте сильно если что не так :) Если кто покажет полностью рабочий пример - буду премного благодарен. Спасибо. Название: Re: Как применить шейдер к объекту painter Отправлено: Igors от Октябрь 28, 2015, 14:58 Слово "шейдер" лучше не упоминать без крайней на то необходимости :) То что Вы хотите скорее "композитное рисование" или "фильтр". См QPainter::setCompositionMode. Правда не припомню там сделать нарисованное черно-белым, ну не беда, тогда просто рисуете сначала в QImage, потом парите своим фильтром и выводите на экран.
Название: Re: Как применить шейдер к объекту painter Отправлено: abdulgalimov от Октябрь 28, 2015, 15:36 Слово "шейдер" лучше не упоминать без крайней на то необходимости :) То что Вы хотите скорее "композитное рисование" или "фильтр". См QPainter::setCompositionMode. Правда не припомню там сделать нарисованное черно-белым, ну не беда, тогда просто рисуете сначала в QImage, потом парите своим фильтром и выводите на экран. Возможно я не правильно выразился. Попробую уточнить: в стандартных примерах есть проект shadereffects: (http://take.ms/4TgzO) Он написал на QML, можно ли что то подобное сделать на C++. Т.е. у меня есть QWidget, в нем я что то рисую, и хочу применить к этому виджету шейдерный(ой, я снова написал это страшное слово:) ) эффект. Название: Re: Как применить шейдер к объекту painter Отправлено: abdulgalimov от Октябрь 28, 2015, 15:59 Вот например у QPainter есть методы beginNativePainting и endNativePainting, между которыми можно рисовать используя OpenGL. Вот как написать и использовать шейдер, чтобы он(шейдер) на входе(texture?) получал то, что уже отрисовано на этом painter-е :)
Название: Re: Как применить шейдер к объекту painter Отправлено: Igors от Октябрь 29, 2015, 06:49 Вот например у QPainter есть методы beginNativePainting и endNativePainting, между которыми можно рисовать используя OpenGL. begin(end)NativePainting здесь ни при чем. Вот как написать и использовать шейдер, чтобы он(шейдер) на входе(texture?) получал то, что уже отрисовано на этом painter-е :) Код
Название: Re: Как применить шейдер к объекту painter Отправлено: Igors от Октябрь 29, 2015, 06:59 ..к этому виджету шейдерный(ой, я снова написал это страшное слово:) ) эффект. Вы можете назвать свинью коровой - но от этого она не станет давать молоко :)В лучшем случае шейдер получает на вход одну-единственную точку (которая даже не пиксель). А в худшем и про точки ничего не знает. Вот я Вам и намекаю что этот термин здесь неуместен :) Название: Re: Как применить шейдер к объекту painter Отправлено: abdulgalimov от Октябрь 29, 2015, 11:54 Кажется до меня дошло. спасибо.
|