Я использую SDL и OpenGL для этого проекта. Мой экран при запуске программы имеет разрешение 640 x 480, как и мои настройки glOrtho. Таким образом, программа запускается синхронно. Но моя программа позволяет пользователю создать выбор с помощью мыши части дисплея для увеличения. Например, пользователь может выбрать область от 320 240 (_mouseStart) до 640 480 (_mouseEnd). Эта область выбора затем передается в glOrtho, чтобы он мог центрировать и масштабировать выбранную область. Моя проблема заключается в том, что я пытаюсь выбрать область уже увеличенной области, потому что координаты мыши SDL находятся в диапазоне от 0,0 до 640 480 вместо новой выбранной области, которая в этом случае была от 320, 240 до 640 480. Мне нужен способ вычислить реальную позицию мыши при попытке выбрать и уже увеличить область.
Я не мог публиковать фотографии здесь, но я создал пост на gamedev.net, на который вы можете ссылаться, если вам нужна дополнительная информация. http://www.gamedev.net/topic/636257-opengl-2d-selection-scaling-multiple-times/
Здесь я вычисляю все положение мыши после того, как пользователь выбрал область (ЧТО ТЕПЕРЬ ПРАВИЛЬНО)
// modify mouse coordinates to fit scaled image
_mouseStart.x = ((_mouseStart.x / SCREEN_WIDTH) * (_portionEnd.x - _portionStart.x)) + _portionStart.x;
_mouseStart.y = ((_mouseStart.y / SCREEN_HEIGHT) * (_portionEnd.y - _portionStart.y)) + _portionStart.y;
_mouseEnd.x = ((_mouseEnd.x / SCREEN_WIDTH) * (_portionEnd.x - _portionStart.x)) + _portionStart.x;
_mouseEnd.y = ((_mouseEnd.y / SCREEN_HEIGHT) * (_portionEnd.y - _portionStart.y)) + _portionStart.y;
Вот как я сбрасываю glOrtho по центру и отображаю выбранную область.
glLoadIdentity();
glOrtho(_portionStart.x, _portionEnd.x, _portionEnd.y, _portionStart.y, 1, -1);
