Вектор вверх позволяет openGL знать, как работает ваша камера.
Подумайте в реальном мире, если вам нужны точки в пространстве, вы можете провести линию от одного к другому. Затем вы можете выровнять объект, например камеру, так, чтобы он указывал от одного к другому. Но у вас нет возможности узнать, как ваш объект должен вращаться вокруг этой оси, которую делает линия. Вектор вверх указывает, в каком направлении должна стоять камера.
в большинстве случаев ваш вектор повышения будет (0,1,0), что означает, что камера будет вращаться так же, как вы обычно держите камеру, или если вы держите голову прямо. если вы установите свой вектор подъема (1,0,0), это будет все равно, что держать голову на боку, поэтому от основания головы до макушки она направлена вправо. Вы по-прежнему смотрите из одной и той же точки (более или менее) в ту же точку, но ваше «вверх» изменилось. Вектор взгляда (0, -1,0) заставил бы камеру быть вверх ногами, как если бы вы делали ручную стойку.
С одной стороны, вы можете подумать об этом: ваша рука - это вектор от положения камеры (ваше плечо) до взгляда камеры в точку (ваш указательный палец), если вы высовываете большой палец, это ваш вектор поднятия.
Эта картинка может вам помочь http://images.gamedev.net/features/programming/oglch3excerpt/03fig11.jpg
Eidt
Перпендикулярно или нет.
Я понимаю, что вы сейчас спрашиваете. Например, если вы (10,10,10) смотрите (0,0,0), результирующий вектор для направления вашего взгляда будет (-10, -10, -10) вектором, перпендикулярным этому, не имеет значения для цели Вы подняли вектор glLookAt, если вы хотите, чтобы представление было ориентировано так, чтобы вы были как обычный человек, просто немного смотрящий вниз, просто установите вектор на (0,1,0). На самом деле, если вы не хотите иметь возможность прокручивать камера, вам не нужно, чтобы это было лучше.