Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: vulko от Март 18, 2014, 13:42



Название: Zoom в OpenGL... как сделать?
Отправлено: vulko от Март 18, 2014, 13:42
Уже который день бьюсь над задачей зума в 2d OpenGL сцене.

Есть QGraphicsScene на весь экран у которой в drawBackground() примерно следующее:
glViewport (fullscreen)
gluOrtho2D()
...отрисовка...


Нужно сделать зум opengl сцены в соотв. с выделяемой мышкой областью на экране.
Никак не могу пересчитать координаты...

Может кто сталкивался с такой задачей и что-нибудь подскажет?


Название: Re: Zoom в OpenGL... как сделать?
Отправлено: Old от Март 18, 2014, 13:56
http://www.blitzbasic.com/Community/posts.php?topic=57006


Название: Re: Zoom в OpenGL... как сделать?
Отправлено: vulko от Март 18, 2014, 14:57
http://www.blitzbasic.com/Community/posts.php?topic=57006

Спс, такой подход (когда есть центральная точка и зум с помощью glScalef) помог решить проблему... Но остается правда небольшое но, теперь не совсем понятно как сделать возможность дальнейшего зума... Т.е. выбрал одну область, и решил ещё и в неё некую часть увеличить...

По идее scale посчитать тут не проблема, а что делать с центральной точкой?
Как пересчитать её координаты?

В данный момент центральную точку считаю так (приложение fullscreen):
Код:
            mapScale = (float) CfgManager::Instance()->getScreenHeight() / selectedAreaSize;
            mapCenterPoint[0] = -(float) mapScale * (CfgManager::Instance()->getScreenWidth() / 2 - zoomArea[0] - selectedAreaSize / 2) * 300 / 1080;
            mapCenterPoint[1] = (float) mapScale * (CfgManager::Instance()->getScreenHeight() / 2 - zoomArea[1] - selectedAreaSize / 2) * 300 / 1080;

пока что с мэджик намберами... 300 в данном случае это размер gl сцены, а 1080 высота экрана... :)