Быстро, быстро, пиво долго ждать не может, посмотрим как сделать материалы для разных сторон граней объекта (во загнул, точно, пора пить пиво ;) ).
Итак, поехали. Взяли прошлый пример, добавили туда массивчик свойств материалов внутренних поверхностей граней объектов, а если проще, то вот так:
GLfloat m_matDiffuseB[] = {0.5f, 1.0f, 0.7f};
Теперь возьмем и уберем одну грань кубика, просто закомментируем один из блоков glBegin(...) - glEnd(). Это для того, чтобы в нем дырка образовалась ;).
Ну, разумеется надо включить разные материальчики для внутренностей и внешностей кубика:
glMaterialfv(GL_FRONT, GL_DIFFUSE, m_matDiffuse); glMaterialfv(GL_BACK, GL_DIFFUSE, m_matDiffuseB);
Быстро нажали F7, посмотрели на банку пива, она еще цела, смотрим что получилось. Думаю все понятно без комментариев.
Но ... всего одно замечание и пиво у нас в руках. Попробуйте в команде glLightModel поставить последний аргумент в 0 и вместо маленькой дырочки получится черная дыра. 8)
Так вот. На этом я, пожалуй, закончу маленький вступительный экскурс в материалы и источники света. Примеры на эту тему можно генерировать до бесконечности и эту бесконечность я оставляю вам для экспериментов.
Все. Я дорвался до заветной банки, желаю и вам того же. (сильно то не расслабляйтесь, дальше хуже будет. Слышали что такое трафарет? А буффер трафарета? Эээээ.... от него мозги съезжают еще похлеще чем от пива ;). Но это все потом, а пока ОНО!!!)