Следующее сообщение опубликовано
Дэйв Шрайнер о настройке базового
система просмотра:
Сначала вычислите ограничивающую сферу для
все объекты в вашей сцене. Это должно
предоставить вам два бита
информация: центр сферы
(пусть (c.x, c.y, c.z) будет эта точка)
и его диаметр (назовите его «диаметр»).
Далее выберите значение для zNear
плоскость отсечения. Общие рекомендации
выбрать что-то большее, чем, но
близко к 1,0. Итак, допустим, вы установили
zNear = 1.0; zFar = zNear + diam;
Структурируйте свои матричные вызовы в этом
заказ (для орфографии
проекция):
GLdouble left = c.x - diam;
GLdouble right = c.x + diam;
GLdouble bottom c.y - diam;
GLdouble top = c.y + diam;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(left, right, bottom, top, zNear, zFar);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
Этот подход должен сосредоточить ваше
объекты в середине окна
и растянуть их, чтобы соответствовать
при условии, что вы используете окно
с соотношением сторон = 1,0). Если твой
окно не квадратное, вычислить влево,
справа, снизу и сверху, как указано выше, и
вставьте следующую логику перед
вызов glOrtho ():
GLdouble aspect = (GLdouble) windowWidth / windowHeight;
if ( aspect < 1.0 ) {
// window taller than wide
bottom /= aspect;
top /= aspect;
} else {
left *= aspect;
right *= aspect;
}
Приведенный выше код должен располагать
объекты в вашей сцене соответственно.
Если вы намерены манипулировать (т.е.
повернуть и т. д.), вам нужно добавить
просмотр преобразования в него.
Будет продолжаться типичное преобразование просмотра
матрица ModelView и может выглядеть
как это:
GluLookAt (0., 0., 2.*diam, c.x, c.y, c.z, 0.0, 1.0, 0.0);