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


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


       {

              return NULL;               // Если нет, возвратим NULL

       }

       File=fopen(Filename,"r");         // Проверка, существует ли файл

       if (File)                         // Существует?

       {

              fclose(File);              // Закрываем файл

              // Загружаем изображение и возвращаем указатель

             return auxDIBImageLoad(Filename);

       }

       return NULL;                      // Если загрузка не удалась, возвращаем NULL

}

 

Данный код тоже немного изменился, в отличие от кода в предыдущих уроках. Если вы не уверены в том, для чего каждая строка, вернитесь и просмотрите предыдущие примеры заново.

 

Отметим, что TextureImage[] будет хранить 2 записи о rgb изображении. Очень важно дважды проверить код, который работает с загрузкой и сохранением текстур. Одно неверное число может привести к зависанию!

 

int LoadGLTextures()                           // Загрузка и преобразование текстур

{

       int Status=FALSE;                       // Индикатор статуса

       AUX_RGBImageRec *TextureImage[2];       // Место хранения для текстур

 

Следующая строка самая важная. Если изменить 2 на любое другое число, точно возникнут проблемы. Проверьте дважды! Это число должно совпадать с тем, которое вы используете, когда определяете TextureImage[].

 

Две текстуры, которые мы загрузим, будут font.bmp (наш шрифт) и bumps.bmp. Вторая текстура может быть любой, какую вы захотите. Я не очень творческий человек, поэтому я решил воспользоваться простой текстурой.

 

memset(TextureImage,0,sizeof(void *)*2);          // Устанавливаем указатель в NULL

 

if ((TextureImage[0]=LoadBMP("Data/Font.bmp")) &&// Загружаем изображение шрифта (TextureImage[1]=LoadBMP("Data/Bumps.bmp")))     // Загружаем текстуру

       {

              Status=TRUE;                        // Устанавливаем статус в TRUE

 

Другая важная строка, на которую нужно посмотреть дважды. Я не могу сказать, сколько писем я получил от людей, спрашивавших "почему я вижу только одну текстуру, или почему моя текстура вся белая!?!". Обычно проблема в этой строке. Если заменить 2 на 1, будет создана только одна текстура, а вторая будет в виде белой текстуры. Если заменить 2 на 3, то программа может зависнуть!




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



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