Книги

OpenGL / FPC - Глава 15

А теперь — последняя разновидность света. Как обычно, нам потребуются дополнительные переменные.

  AmbientLight : array[0..3] of glFloat = (0.5,0.5,0.5,1.0);
  DiffuseLight : array[0..3] of glFloat = (1.0,1.0,1.0,1.0);
  SpecularLight : array[0..3] of glFloat = (1.0,1.0,1.0,1.0);
  SpecularReflection : array[0..3] of glFloat = (0.4,0.4,0.4,1.0);
  LightPosition : array[0..3] of glFloat;

SpecularLight содержит описание источника света, а SpecularReflection — это интенсивность отражения от материала.

  glEnable(GL_LIGHTING);
  glLightfv(GL_LIGHT0,GL_AMBIENT, @AmbientLight);
  glLightfv(GL_LIGHT0,GL_DIFFUSE, @DiffuseLight);
  glLightfv(GL_LIGHT0,GL_SPECULAR, @SpecularLight);
  glEnable(GL_LIGHT0);
  LightPosition[0] := 0.0;  LightPosition[1] := 0.0;
  LightPosition[2] := 0.0;  LightPosition[3] := 1.0;
  glLightfv(GL_LIGHT0,GL_POSITION,@LightPosition);
  glEnable(GL_COLOR_MATERIAL);
  glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
  glMaterialfv(GL_FRONT, GL_SPECULAR, @SpecularReflection);
  glMateriali(GL_FRONT,GL_SHININESS,10);

Теперь создали наш LIGHT0 с новыми значениями зеркального света. Также мы задали некоторые параметры при определении наших материалов. Указываем OpenGL, что наши материалы отражают зеркальный свет. Также определили яркость материалов с помощью glMateriali(GL_FRONT,GL_SHININESS,10);

Главная сцена — та же. Изменилось лишь ее освещение. Рекомендации обычные: не бойтесь экспериментировать. Возьмите исходник примера здесь.

Актуальные версии
FPC3.2.2release
Lazarus3.2release
MSE5.10.0release
fpGUI1.4.1release
links
Для вас недорого утилизация мягкой мебели в рассрочку со скидками.