Книги

OpenGL / FPC - Глава 6

Тема этой главы — трансляция. Трансляция — это сдвиг объекта в пространстве без изменения его формы.

Представьте треугольник вокруг центра нашей матрицы ( 0, 0, 0). Вершины пусть будут: ( 0,-1, 0); (-1,-1, 0); ( 1,-1, 0);

Есть два способа сдвинуть треугольник вправо. Первый состоит в сдвиге вершин треугольника: ( 1,-1, 0); ( 0, -1, 0); ( 2, -1, 0); Другой способ — надо сдвинуть всю матрицу вправо и перерисовать треугольник вокруг нового центра матрицы. Вот это-то и есть трансляция.

Трансляции осуществляются при помощи glTranslate(). Следует задать 3 параметра, значения сдвига матрицы по x/ y/ z. Новый центр матрицы будет в точке с этими координатами. Приведем здесь небольшой код трансляции треугольника.

  glClear( GL_COLOR_BUFFER_BIT );
  glLoadIdentity();
  glTranslatef(0.9,0.0,0.0);
  glBegin( GL_TRIANGLES );
    glColor3f(1.0, 0.0, 0.0);  
     glVertex3f(0.0, 1.0, 0.0);
    glColor3f(0.0, 1.0, 0.0); 
     glVertex3f(-1.0, -1.0, 0.0);
    glColor3f(0.0, 0.0, 1.0); 
     glVertex3f(1.0, -1.0, 0.0);
  glEnd();

А полный код примера здесь. Вся матрица сдвигается вправо на 0.9 единиц.

С помощью glLoadIdentity(); мы выполняем сброс матрицы, располагая ее в первоначальных координатах. Если удалить эту строку, матрица каждый раз будет сдвигаться ( а раз — это шаг в главном цикле). Вот и все.

Обратите также внимание на следующее. В этот раз мы используем новый цвет для каждой вершины. Это значит, что каждая вершина рисуется своим цвето, а затем цвет "смешивается" с цветами соседних вершин. Получается раскрашенный треугольник.

Актуальные версии
FPC3.2.2release
Lazarus3.2release
MSE5.10.0release
fpGUI1.4.1release
links
береза в интерьере