Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: ecspertiza от Август 14, 2013, 20:36



Название: QGraphicsView & QGLWidget сглаживание
Отправлено: ecspertiza от Август 14, 2013, 20:36
Всем привет, необходимо QGraphicsView в качестве вьюпорта задать QGLWidget ,что бы отрисовка была пошустрее, но замечается сильное падение в качестве по сравнению с нативной графикой. Я сначала думал ,что это из за сглаживание, начал копать в эту сторону и посмотрел , что необходимо задать просто SampleBuffer для QGLFormat. Это отчасти решило проблему, но артефакты все равно остаются вот примеры

это отрисовка с нативной графикой http://joxi.ru/Ir8LUtg5CbCLO63hUdc
это с QGlWidget http://joxi.ru/Vr8LUtg5CbBcPKNakp0
а это с QGlWidget + SampleBuffer http://joxi.ru/f78LUtg5CbD6O_jOeow видны рваные края. Возникает вопрос можно ли добиться лучшего результата при использовании QGlWidget в качестве вьюпорта ?

система MacOS 10.7


Название: Re: QGraphicsView & QGLWidget сглаживание
Отправлено: kamre от Август 14, 2013, 23:19
В openGL же вроде pixel-perfect вообще не бывает. На разных карточках по разному может рендериться.

Заметил когда-то, что на windows с nvidia рендеринг зависит от настройки "Antialiasing - Gamma correction" в NVIDIA Control Panel.


Название: Re: QGraphicsView & QGLWidget сглаживание
Отправлено: ecspertiza от Август 14, 2013, 23:50
я на pixel-perfect не расчитываю конечно, но и так оставлять это страшно, если я еще и текст пытаюсь написать то там вообще тихий ужас, про сглаживание даже можно не говорить. Думается можно сделать вывод гораздо лучше.


Название: Re: QGraphicsView & QGLWidget сглаживание
Отправлено: Igors от Август 15, 2013, 09:49
Attach - сглаживание "просто OpenGL" (без Qt), минимальное, 4 сампла. И да, от карты зависит

[offtop]
Счастливые люди, для них антиалиас - просто установка чего-то :) А у меня часто геморрой бОльший чем сама задача

Edit: виноват, забыл аттач, вот он


Название: Re: QGraphicsView & QGLWidget сглаживание
Отправлено: Disa от Август 15, 2013, 11:21
Цитировать
А у меня часто геморрой бОльший чем сама задача

Какой именно?


Название: Re: QGraphicsView & QGLWidget сглаживание
Отправлено: Igors от Август 15, 2013, 12:36
Какой именно?
Ну вот напр надо раскрасить объект как в клеточку, кака шахматная доска, казалось бы что тут сложного. А что будете делать если объект мал или он далеко? (типа 5 клеток в одном пыкселе)


Название: Re: QGraphicsView & QGLWidget сглаживание
Отправлено: ecspertiza от Август 15, 2013, 13:15
Перенес пример на винду, там естественно карточка другая и сглаживание по другому работает, видимо действительно проблема в этом была. Спасибо за помощь :)


Название: Re: QGraphicsView & QGLWidget сглаживание
Отправлено: Fregloin от Октябрь 12, 2013, 21:06
На пятом Qt все уже риусется принудительно в GL. Качество хорошее.


Название: Re: QGraphicsView & QGLWidget сглаживание
Отправлено: ecspertiza от Октябрь 13, 2013, 13:50
На пятом Qt все уже риусется принудительно в GL. Качество хорошее.

Это конечно замечательно, но пока нет возможности перевести проект на 5ый Qt.


Название: Re: QGraphicsView & QGLWidget сглаживание
Отправлено: Disa от Октябрь 21, 2013, 09:49
Что-то закапался на работе и давно сюда не заходил...
Немного оффтоп to Igors:
Так чем не устраивает би- или трилинейная фильтрации или суперсемплинг? Погоня за производительностью?


Название: Re: QGraphicsView & QGLWidget сглаживание
Отправлено: Igors от Октябрь 22, 2013, 12:05
Немного оффтоп to Igors:
Так чем не устраивает би- или трилинейная фильтрации или суперсемплинг? Погоня за производительностью?
Если и оффтоп, то полезный. Вы так говорите как будто все эти вещи у Вас в кармане  :) Bilinear хорош для увеличения, но не наоборот. Трилинейная - не знаю как Вы ее здесь примените. Суперсамплинг - да, но его же надо делать, и это совсем непросто. Хотя бы определить покрываемую пикселем площадь - уже заботы. Взять соседние пиксели также не так легко как может показаться - напр при наличии UV.

И это простейший атрибут - диффузный цвет. А как будете самплить напр блики (specular)? Или надеетесь отсидеться за широкой спиной карты/OpenGL?  :)