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


Урок 17 по OpenGL. Двухмерные шрифты из текстур - часть 10


 

Строка ниже выбирает, каким набором символов мы хотим воспользоваться. Если мы хотим использовать второй набор символов, то добавляем 128 к base (128 - половина 256 символов). Добавляя 128, мы пропускаем первые 128 символов.

 

       glListBase(base-32+(128*set));         // Выбираем набор символов (0 или 1)

 

Сейчас, все что осталось - это  нарисовать символы на экране. Делаем это так же как во всех других уроках со шрифтами. Используем glCallLists(). strlen(string) это длина строки (сколько символов мы хотим нарисовать), GL_BYTE означает то, что каждый символ представляется одним байтом (байт это любое значение от 0 до 255). Наконец, string содержит тот текст, который надо напечатать на экране.

 

       glCallLists(strlen(string),GL_BYTE,string); // Рисуем текст на экране

 

Все, что надо теперь сделать, это восстановить перспективу. Мы выбираем матрицу проектирования и используем glPopMatrix(), чтобы восстановить установки, сохраненные с помощью glPushMatrix(). Важно восстановить их в обратном порядке, в том в котором мы их сохраняли.

 

       glMatrixMode(GL_PROJECTION);            // Выбираем матрицу проекции

       glPopMatrix();                          // Восстанавливаем старую матрицу проекции

 

Теперь мы выбираем матрицу просмотра модели и делаем то же самое. Мы используем glPopMatrix(), чтобы восстановить нашу матрицу просмотра модели, на ту, которая была, прежде чем мы устанавливали плоский экран.

 

       glMatrixMode(GL_MODELVIEW);             // Выбираем матрицу просмотра модели

       glPopMatrix();                          // Восстанавливаем старую матрицу проекции

 

Наконец, разрешаем проверку глубины. Если мы не запрещали проверку глубины в коде раньше, то нам не нужна эта строка.

 

       glEnable(GL_DEPTH_TEST);                // Разрешаем тест глубины

}

 

В ReSizeGLScene() ничего менять не надо, так что переходим к InitGL().

 

int InitGL(GLvoid)                             // Все установки для OpenGL здесь




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



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