Предположим, что у вас есть сетка в плоскости xy мира:
glColor3f(0, 1, 1);
glBegin(GL_LINES);
for (int i = 0; i <= 10; i ++)
{
// horizontal
glVertex3f(-50.0f + i*10.0f, -50.0f, 0.0f);
glVertex3f(-50.0f + i*10.0f, 50.0f, 0.0f);
// vertical
glVertex3f(-50.0f, -50.0f + i*10.0f, 0.0f);
glVertex3f( 50.0f, -50.0f + i*10.0f, 0.0f);
}
glEnd();
Убедитесь, что расстояние от до дальней плоскости проекции достаточно велико (см. gluPerspective
). Вся геометрия, которая не находится между ближней и дальней плоскостью усеченной области обзора , обрезается.
Более того, убедитесь, что соотношение сторон (4,0 / 3,0) соответствует соотношению прямоугольника окна просмотра (окно ).
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, 4.0 / 3.0, 1, 200);
Для использования gluLookAt
верхний вектор обзора должен быть перпендикулярен сетке. Если сетка расположена параллельно плоскости xy, то вектор вверх - это ось z (0, 0, 1).
Цель (центр) - это центр сетки (0, 0, 0).
Точка обзора (положение глаз) должна быть выше и перед сеткой, например (0, -55, 50). Обратите внимание, что точка обзора используется для сетки с нижним левым от (-50, -50, 0) и верхним правым от (50, 50, 0).
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, -55.0, 50.0, 0, 0, 0, 0, 0, 1);