//--Построение цилиндра (кольца), расположенного параллельно оси z----//
//--Второй и третий параметры задают радиусы оснований, четвертый-----//
//--высоту,последние два-число разбиений вокруг и вдоль оси z---------//
//--При этом дальнее основание цилиндра находится в плоскости z=0-----//
gluCylinder(QuadrObj,RingRad,RingRad,RingHeight,30,2);
}
void TextureInit() {
char strFile[]="texture.bmp";
//--Выравнивание в *.bmp по байту-------------------------------------//
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
//--Создание идентификатора для текстуры- ----------------------------//
glGenTextures(1,&TexId);
//--Загрузка изображения в память-------------------------------------//
AUX_RGBImageRec *pImage = auxDIBImageLoad(strFile);
int BmpWidth= pImage->sizeX;
int BmpHeight = pImage->sizeY;
void* BmpBits = pImage->data;
//--Начало описания свойств текстуры----------------------------------//
glBindTexture (GL_TEXTURE_2D,TexId);
//--Создание уровней детализации и инициализация текстуры ------------//
gluBuild2DMipmaps(GL_TEXTURE_2D,3,BmpWidth, BmpHeight,GL_RGB,GL_UNSIGNED_BYTE,BmpBits);
//--Разрешение наложения этой текстуры на quadric-объекты-------------//
gluQuadricTexture(QuadrObj, GL_TRUE);
//--Задание параметров текстуры---------------------------------------//
//--Повтор изображения по параметрическим осям s и t------------------//
glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
//--Не использовать интерполяцию при выборе точки на текстуре---------//
glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
//--Совмещать текстуру и материал объекта-----------------------------//
glTexEnvi (GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
}
void Init(void) {
InitVertexTetr();
InitNormsTetr();
MakeTetrList();
//--Определение свойств материала-------------------------------------//
glMaterialfv (GL_FRONT_AND_BACK,GL_AMBIENT,mat_amb);
glMaterialfv (GL_FRONT_AND_BACK,GL_SPECULAR,mat_spec);
glMaterialf(GL_FRONT,GL_SHININESS,shininess);
//--Определение свойств освещения-------------------------------------//
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_col);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
//--Проводить удаление невидимых линий и поверхностей-----------------//
glEnable(GL_DEPTH_TEST);
//--Проводить нормирование нормалей-----------------------------------//
glEnable(GL_NORMALIZE);
//--Материалы объектов отличаются только цветом диффузного отражения--//