Я бы подумал сделать это наоборот.Держите корабль в 0,0 мировых координатах и перемещайте мир относительно него.Тогда вам нужен только вызов glOrtho, когда размер окна изменяется (камера находится в фиксированном положении).Помимо того, что вам не нужно каждый раз вычислять матрицу проекции, вы также получаете преимущество, заключающееся в том, что если в будущем ваш мир станет огромным, у вас есть возможность использовать позиции двойной точности, поскольку большие смещения на поплавках приводят к неточному расположению.1001 *
Чтобы нарисовать вашу космическую сцену, вы затем манипулируете матрицей вида модели перед рисованием каких-либо объектов и используете другую матрицу при рисовании корабля.наведите и умножьте его на матрицу проекции, умноженную на матрицу вида модели (убедитесь, что вы получили правильное умножение).Затем у вас будет значение с x и y в диапазоне от -1 до 1. Вы можете добавить [1,1] и умножить на половину размера экрана, чтобы получить положение в пикселях.(если хотите, вы можете добавить это в матричное преобразование).