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


Урок 24. Лексемы, Расширения, Вырезка и Загрузка TGA - часть 10


 

  // Строим текстуру из данных

  glGenTextures(1, &texture[0].texID);  // Сгенерировать OpenGL текстуру IDs

  glBindTexture(GL_TEXTURE_2D, texture[0].texID); // Привязать нашу текстуру

  // Линейная фильтрация

  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

  // Линейная фильтрация

  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

 

Теперь посмотрим, был ли TGA файл 24-х или 32-х битным. Если он был 24-х битным, то установим type в GL_RGB (отсутствует альфа-канал). Если бы мы этого не сделали, то OpenGL попытался бы построить текстуру с альфа-каналом. Так как информация об альфа отсутствует, то или произошел бы сбой программы или появилось бы сообщение об ошибке.

   

  if (texture[0].bpp==24)                      // Если TGA 24 битный

  {

     type=GL_RGB;                            // Установим 'type' в GL_RGB

  }

 

Теперь мы построим нашу текстуру, таким же путем как делали это всегда. Но вместо того, чтобы просто воспользоваться типом (GL_RGB или GL_RGBA), мы заменим его переменной type. Таким образом, если программа определит, что TGA был 24-х битным, то type будет GL_RGB. Если же TGA был 32-х битным, то type будет GL_RGBA.   

 

После того как текстура будет построена, мы возвратим true. Это даст знать коду InitGL(), что все прошло успешно.

 

  glTexImage2D(GL_TEXTURE_2D, 0, type, texture[0].width, texture[0].height,                  

                              0, type, GL_UNSIGNED_BYTE, texture[0].imageData);

 

  return true;              // Построение текстуры прошло Ok, возвратим true

}

 

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

 

Единственным отличием является то, что я привязываю текстуру textures[0].texID, которая указывает на текстуру шрифта. Я добавил только лишь .texID.




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