OpenGL в Delphi

       

Металлические детали покрывайте текстурой для повышения зрелищности




Значения всех параметров текстуры задаются такими, которые обеспечивают максимальное качество изображения:

// текстуру накладывать медленно, но точно
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// смешивать накладывающиеся цвета
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND);
// карта координат подобна сфере
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glEnable(GL_TEXTURE_2D);
// иначе будет нарисована цилиндрическая Земля
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);

Обратите внимание, что в этом примере перемещается не объект, а точка зрения наблюдателя:

glPushMatrix;
gluLookAt(lO*cos(spin), 5*cos(spin)*sin(spin), 15*sin(spin),
0.0, 0.0, 0.0, 1.0, 0.0, 0.0); glCallList(CyList);
glPopMatrix;

Не забывайте об этом примере, когда будете рисовать модели, где присутствуют цилиндрические детали, сделанные из металла.
Поверхности, покрытые текстурой, вполне пригодны для создания специальных эффектов. В проекте из подкаталога Ex93 на такой поверхности видно отражение объектов, располагающихся над ней (Рисунок 4.66). Само создание эффекта традиционно и заключается в том, что объекты сцены рисуются дважды, а для того чтобы скрыть от наблюдателя эту хитрость, используется буфер трафарета:



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