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


Урок 26. Реалистичное отражение с использование буфера шаблона и отсечения. - часть 6


  return TRUE;  // Инициализация прошла успешно

}

 

Нижеприведенная функция рисует наш объект (в самом деле, неплохо смотрящийся пляжный мяч).

 

Устанавливаем цвет с максимальной интенсивностью белого и подключаем текстуру мяча (состоящую из последовательности красной, белой и синей полос).

 

После этого мы рисуем квадратичную сферу (Quadratic Sphere) с радиусом в 0.35f, 32 срезами (разбиениями вокруг оси Z) и 16 полосами (разбиениями вдоль оси Z) (вверх и вниз).

 

void DrawObject()  // Рисование мяча

{

  glColor3f(1.0f, 1.0f, 1.0f);// Цвет - белый

  glBindTexture(GL_TEXTURE_2D, texture[1]);// Выбор текстуры 2 (1)

  gluSphere(q, 0.35f, 32, 16);// Рисование первого мяча

 

Нарисовав первый мяч, выбираем новую текстуру (EnvRoll), устанавливаем значение прозрачности в 40% и разрешаем смешивание цветов, основанное на значении альфа (прозрачности). Команды glEnable(GL_TEXTURE_GEN_S) и glEnable(GL_TEXTURE_GEN_T) разрешают сферическое наложение.

 

После всего этого мы перерисовываем сферу, отключаем сферическое наложение  и отключаем смешивание.

 

Конечный результат – это отражение, которое выглядит как блики на пляжном мяче. Так как мы включили сферическое наложение, текстура всегда повернута к зрителю, даже если мяч вращается. Поэтому мы применили смешивание, так что новая текстура не замещает старую (одна из форм мультитекстурирования).

 

  glBindTexture(GL_TEXTURE_2D, texture[2]);// Выбор текстуры 3 (2)

  glColor4f(1.0f, 1.0f, 1.0f, 0.4f);// Белый цвет с 40%-й прозрачностью

  glEnable(GL_BLEND);               // Включить смешивание

  // Режим смешивания

  glBlendFunc(GL_SRC_ALPHA, GL_ONE);

  // Разрешить сферическое наложение

  glEnable(GL_TEXTURE_GEN_S);          

  // Разрешить сферическое наложение

  glEnable(GL_TEXTURE_GEN_T);     

  // Нарисовать новую сферу при помощи новой текстуры

  gluSphere(q, 0.35f, 32, 16);

  // Текстура будет смешена с созданной для эффекта мультитекстурирования (Отражение)




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



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