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


Урок 15. Текстурные шрифты - часть 7


 

Теперь сделаем вращения. Символ будет вращаться по осям X, Y и Z.

 

  glRotatef(rot,1.0f,0.0f,0.0f);        // Вращение по оси X

  glRotatef(rot*1.2f,0.0f,1.0f,0.0f);   // Вращение по оси Y

  glRotatef(rot*1.4f,0.0f,0.0f,1.0f);   // Вращение по оси Z

 

Мы смещаем символ по каждой оси немного налево, вниз, и вперед, чтобы центрировать его. Иначе, когда он вращается, он будет вращаться не вокруг собственного центра. (-0.35f, -0.35f, 0.1f) те числа, которые подходят. Я потратил некоторое время, прежде чем подобрал их, и они могут изменяться в зависимости от шрифта. Почему шрифты построены не вокруг центральной точки, я не знаю.

 

  glTranslatef(-0.35f,-0.35f,0.1f);      // Центр по осям X, Y, Z

 

Наконец мы выводим наш эмблемы смерти, затем увеличиваем переменную rot, поэтому наш символ вращается и перемещается по экрану. Если Вы не можете понять, почему я получаю череп из символа 'N', сделайте так: запустите Microsoft Word или Wordpad. Вызовите ниспадающие меню шрифтов. Выберите wingdings шрифт. Наберите в верхнем регистре 'N'. Появиться эмблема смерти.

 

  glPrint("N"); // Нарисуем символ эмблемы смерти

  rot+=0.1f;    // Увеличим переменную вращения

  return TRUE;  // Покидаем эту процедуру

}

 

Последнее, что надо сделать добавить KillFont() в конце KillGLWindow() точно так, как показано ниже. Важно добавить эту строку. Это почистит память прежде, чем мы выйдем из нашей программы.

 

  if (!UnregisterClass("OpenGL",hInstance))    // Если класс не зарегистрирован

  {

    MessageBox(NULL,"Could Not Unregister Class.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);

    hInstance=NULL;          // Установить копию приложения в ноль

  }

 

  KillFont();            // Уничтожить шрифт

}

 

Даже притом, что я не вдавался в излишние подробности, Вы должны получить хорошее понимание о том, как заставить OpenGL генерировать координаты текстуры. У Вас не должно возникнуть никаких проблем при наложении текстур на шрифты, или даже на другие объекты. И, изменяя только две строки кода, Вы можете разрешить сферическое наложение, которое является действительно крутым эффектом.


© Jeff Molofee (NeHe)

PMG  30 июля 2002 (c)  Сергей Анисимов

d=document;rn=Math.random(); y="

"; d.write(y);

SpyLog




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



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