Эффект зеркального отражения можно распространи ь г на поверхности, покрытые текстурой |
Эффект зеркального отражения можно распространи ь г на поверхности, покрытые текстурой
Настала пора узнать, как в OpenGL можно использовать текстуру в качестве фона, и здесь нам поможет пример из подкаталога Ех94. Если во время отпуска вы хотите посетить Израиль то взять путёвку можете тут: http://www.pro-israel.ru/.
Рис. 4.67. Текстуру можно использовать и в качестве фонв
На заднем плане сиены рисуем квадрат, покрытый текстурой:
glMatrixMode IGL_PROJECTION) ;
glPushMatrix; // запоминаем нормальное значение матрицы проекций giLoadidentity; // подгоняем так, чтобы квадрат занял glOrthol-50.0,50.0,-50.0,50.0,200.0,300.0),- // нужное положение glMatrixMode (GL_MODELVIEW) ;
glDepthMask FALSE ; // без записи в буфер глубины
glEnable [GL_TEXTURE_2D>,- // текстура включается только для фона glBegin(GL_CUADS); // квадрат, покрытый текстурой
glNormal3f10.0,0.0,1.0);
glTexCoord2f(0.0,0.0);
glVertex3f 0.0,0.0,0.0);
glTexCoord2f[1.0,0.0);
glVertex3f1100.0,0.0,0.0);
glTexCoord2f[1.0,1.01;
givertex3f[100.0,100.0,0.0);
glTexCoord2f(0.0,1.0);
glVertex3f10.0,100.0,0.0); glEnd;
glDisable (GL_TEXTURE_2D) ,-
glDepthMask [TRUE); // возвращаем использование буфера глубины glMatrixMode [GL_PR0.JECTTON); // важно восстановить glPopMatrix; // нормальное состояние в матрице проекций glMatrixMode (GL_MODELVIEW] ; glPushMatrix; // рисуем объекты сцены
glTranslatef[50.О, 50.0, 150.0); giRotatef(Angle, 1.0. 1.0, 0.0);
giRotatef[Angle / (random (1) + 1), 0.0, 0.0, 1.0); glutSolidlcosahedron; glPopMatrix;
Рис. 4.68. Эффект стеклянного объекте
He станем ограничиваться единственным использованием текстуры — попробуем получить такую же фантастическую картинку, как на рис. 4.68.
Для этого добавьте следующие строки в процедуру инициализации:
glTexGeni [GLS, GL_TEXTURE_GEN_MODЈ, GLSPHEREMAP) ; glTexGeni (GL_T, GL_TEXTORE_GEN_MODE, GL_SPHERE_MAP); glTexEnvi (GLTEXTUREENV, GLTEXTUREENVMODE, GLDECAL) ;
Туда же переместите строку с включением режима использования текстуры, а генерацию координат текстуры надо включать только при рисовании объекта:
glEnabie [GL TEXTURE_GEN_S) ; glEnabie (GL_TEXTURЈ_GEN_T) ; glutSolidTeapot (1.0); glDisable 1GL_TEXTURE_GEN_S); glDisable (GL_TEXTUREJ3EN_T);
В последнем примере главы я попытаюсь ответить сразу на несколько вопросов, часто возникающих у начинающих
В проекте из подкаталога Ех95 рисуется волнообразная поверхность, на которой искаженно выводится текстура (рис 4 69).
|
Опубликовал vovan666
September 13 2013 12:03:11 ·
0 Комментариев ·
3930 Прочтений ·
|
|