Народный учебник по OpenGL

фирма ремонта бытовой техники http://bystro-service.ru/

Урок 10. Загрузка и перемещение в трехмерном мире - часть 6


 

Далее вы спросите меня: что такое walkbias (дословно: смещение походки)?  Это слово, которое я изобрёл J. Оно представляет собой смещение, которое происходит, когда персона идёт (голова смещается вверх и вниз как буй). Это легко устанавливается изменением Y позиции камеры по синусоиде. Я решил использовать это, потому что простое перемещение вперёд и назад выглядит не реально.

 

Теперь когда эти переменные получили свои значения, мы можем сделать второй и третий шаги. Они будут сделаны в цикле отображения, так как наша программа на сложная, чтобы заслужить для этого отдельную функцию.

int DrawGLScene(GLvoid)             // Нарисовать сцену OpenGL

{

// Очистить сцену и буфер глубины

      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

      glLoadIdentity();             // Сбросить текущую матрицу

 

      // Вещ. перем. для временных X, Y, Z, U и V

      GLfloat x_m, y_m, z_m, u_m, v_m;

      GLfloat xtrans = -xpos;       // Проекция игрока на ось X

      GLfloat ztrans = -zpos;       // Проекция игрока на ось Z

      // Для смещения изображения вверх и вниз

      GLfloat ytrans = -walkbias-0.25f;

      // 360 градусный угол для поворота игрока

      GLfloat sceneroty = 360.0f - yrot;

 

      int numtriangles;           // Количество треугольников

 

      glRotatef(lookupdown,1.0f,0,0);// Вращать вверх и вниз

// Вращать в соответствии с направлением взгляда игрока

      glRotatef(sceneroty,0,1.0f,0);

     

      // Проецировать сцену относительно игрока

      glTranslatef(xtrans, ytrans, ztrans);

      // Выбрать текстуру filter

      glBindTexture(GL_TEXTURE_2D, texture[filter]);

     

      // Получить кол-во треугольников Сектора 1

      numtriangles = sector1.numtriangles;

     

      // Процесс для каждого треугольника

      // Цикл по треугольникам

      for (int loop_m = 0; loop_m < numtriangles; loop_m++)

      {

            glBegin(GL_TRIANGLES);  // Начинаем рисовать треугольники

// Нормализованный указатель вперёд




Начало  Назад  Вперед



Книжный магазин