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



             

Урок 20. Маскирование - часть 3


{

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

  AUX_RGBImageRec *TextureImage[5]; // Создать место для текстуры

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

 

  if ((TextureImage[0]=LoadBMP("Data/logo.bmp")) &&   // Текстура эмблемы

      (TextureImage[1]=LoadBMP("Data/mask1.bmp")) &&  // Первая маска

      (TextureImage[2]=LoadBMP("Data/image1.bmp")) && // Первое изображение

      (TextureImage[3]=LoadBMP("Data/mask2.bmp")) &&  // Вторая маска

      (TextureImage[4]=LoadBMP("Data/image2.bmp")))   // Второе изображение

  {

    Status=TRUE;                    // Задать статус в TRUE

    glGenTextures(5, &texture[0]);  // Создать пять текстур

    for (loop=0; loop<5; 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);

    }

  }

  for (loop=0; loop<5; loop++)      // Цикл по всем пяти текстурам

  {

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

    {

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

      {

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

      }

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

    }

  }

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

}

Код ReSizeGLScene() не изменился, и мы опустим его.

Код инициализации необходимая формальность. Мы загружаем наши текстуры, задаем цвет очистки, задаем и разрешаем тест глубины, включаем плавное закрашивание, и разрешаем наложение текстуры. У нас простая программа, поэтому нет необходимости в сложной инициализации :).




Содержание  Назад  Вперед