OpenGL в Delphi

       

Команда glShadeModel может существенно повлиять на получающиеся образы




Стоит сказать, что манипулирование свойствами источника света и оптическими свойствами материалов позволяет достичь весьма впечатляющих визуальных эффектов, поэтому давайте изучим данную тему максимально подробно.
В следующем простом примере, проекте из подкаталога Ех15, рисуется сфера с красивым бликом на поверхности. У источника света задается позиция, остальные параметры - по умолчанию. Материал определяется диффузной и зеркальной составляющими, размер блика описывается следующей строкой:

glMaterialf(GL_FRONT, GL_SHININESS, 25.0);

В этом примере есть то, чего мы ранее не встречали: здесь включается режим коррекции цвета материала и вызывается новая для нас команда:

glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GLJ3IFFUSE);

Команда glColorMaterial задает, какая из характеристик материала корректируется текущим цветом. Фактически это парная команда к режиму GL_COLOR_MATERIAL, однако в предыдущих примерах мы использовали значение, принятое по умолчанию.

Замечание
С точки зрения оптимизации эта команда предпочтительнее команды glMaterial.

В примере первоначальные значения элементов массива diffuseMaterial определяют диффузные свойства материала, по нажатию клавиш 'R', 'G' и 'В' увеличивается вес красного, зеленого или синего в текущем цвете:

procedure changeRedDiffuse;
begin
diffuseMaterial[0] := diffuseMaterial[0] + 0.1;
If diffuseMaterial[0] > 1.0
then diffuseMaterial[0] := 0.0;
glColor4fv(@diffuseMaterial);
end;

Проект из подкаталога Ex 16 представляет собой еще одну модель планетной системы: вокруг звезды вращается планета, вокруг которой вращается спутник (Рисунок 4.9).



Содержание раздела