Текстуру можно использовать для эмуляции зеркального отражения
Файл растра для этого примера я взял из DirectX SDK фирмы
Секрет примера состоит не в удачном подборе образа текстуры, при любом другом картинка будет выглядеть так же превосходно. Главное в нем — это режим генерации координат текстуры, который задается приближенным к искажениям на поверхности сферы:
glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GLJ3PHEREMAP); // подобно сфере glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP) ; glEnabie [GL__TEXTOHE__GEN__S); // включается генерация обеих координат glEnabie (GL_TEXTUHE_GEN_T);
Советую вам неспешно разобраться с этим примером, попробуйте поочередно отключать генерацию то одной, то другой координаты и посмотреть получающийся результат.
Такой же эффект эмуляции зеркального отражения, но на поверхности цилиндра, демонстрируется в проекте из полкаталога Ех92 (рис. 4.6S).
giPushMatrix;
giRotatef (-10, 0.0, 1.0, 0.0);
giRotatef (Angle, 0.0, 0.0, 1.0);
glEnabie (GL_BLEND); // так оптимальнее
glCallList [Inside); // вначале - внутреннюю сферу
glCallList (Earth); // потом — наружною
glDisable (GL_BLEND); glPopMatrix;
Основные моменты, связанные с использованием текстуры, мы с вами изучили, теперь уточним еще некоторые вопросы.
На рнс. 4.64 представлена работа следующего примера, проекта из подкаталога Ех91, где наша знакомая модель неузнаваемо преобразилась.
|