Введение в OpenGL | страница 24



> glEndList();

>}

>void DrawRing() {

> //--Построение цилиндра (кольца), расположенного параллельно оси 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);

> //--Проводить нормирование нормалей-----------------------------------//