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


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


 

Вы должны вызывать glGenTextures() один раз. После вызова glGenTexture, необходимо сгенерировать все ваши текстуры. Я видел людей, которые вставляют вызов glGenTextures() перед созданием каждой текстуры. Обычно они ссылаются на то, что новая текстура перезаписывает все уже созданные текстуры. Было бы неплохо, сначала решить, сколько текстур необходимо сделать, а затем вызвать один раз glGenTextures(), а потом создать все текстуры. Не хорошо помещать вызов glGenTextures() в цикл без причины.

 

glGenTextures(2, &texture[0]);            // Создание 2-х текстур

 

for (loop=0; loop<2; loop++)              // Цикл для всех текстур

{

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

            glBindTexture(GL_TEXTURE_2D, texture[loop]);

            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

            glTexImage2D(GL_TEXTURE_2D, 0, 3,

TextureImage[loop]->sizeX, TextureImage[loop]->sizeY, 0,

GL_RGB, GL_UNSIGNED_BYTE, TextureImage[loop]->data);

}

}

 

Следующие стоки кода проверяют, занимает ли загруженное нами rgb изображение для создания текстуры память. Если да, то высвобождаем ее. Заметьте, мы проверяем и освобождаем обе записи для изображений. Если мы используем три различные изображения для текстур, то необходимо проверить и освободить память из-под 3-х изображений.

 

for (loop=0; loop<2; loop++)

       {

       if (TextureImage[loop])                // Если текстура существует

              {

              if (TextureImage[loop]->data)   // Если изображение текстуры существует

              {

                    // Освобождаем память от изображения текстуры

                    free(TextureImage[loop]->data);

              }

              free(TextureImage[loop]);   // Освобождаем память от структуры изображения

              }

       }

return Status;                                // Возвращаем статус




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



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