Спс, такой подход (когда есть центральная точка и зум с помощью 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 высота экрана...