Наложение текстур
Требуется разработать программу, генерирующую трехмерное изображение «комнаты» с отсутствующей передней стенкой (пол, потолок, левая, задняя, правая стены);
В комнате присутствует искусственное освещение в виде одного направленного источника света с возможностью изменения цвета и угла луча. Дополнительно требуется установить фоновое освещение (ambient). Местоположение источника света должно меняться, изменения могут происходить в автоматическом режиме или при помощи интерфейса.
Внутри комнаты находится заданный набор предметов с определенными свойствами. Предметы должны быть текстурированы.
Обязательным является отображение теней, отбрасываемых предметами (как минимум - на «пол»). Тени можно реализовать при помощи буфера трафарета (StencilBufer) или другим способом.
Камера должна быть расположена так, чтобы была видна вся комната.
Предметы: октаэдр, куб, тор.
В аттаче проект.
Проблема в наложении текстур. Накладывается только последняя текстура на все объекты сразу.
Помогите, пожалуйста, разобраться в чем дело...
З.Ы. Visual Studio 2008
ссылка для скачивания проекта http://ifolder.ru/23891320
Мне лень скачивать и изучать весь проект, лучше отдельно покажите фрагменты кода для инициализации текстур и для их использования.
Код:
glBindTexture(GL_TEXTURE_2D, texture[1]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-2.0, -2.0,-2.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(2.0, -2.0, -2.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-2.0, -2.0, 2.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(2.0, -2.0, 2.0);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[2]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-2.0, 2.0,-2.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(2.0, 2.0, -2.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-2.0, 2.0, 2.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(2.0, 2.0, 2.0);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[2]);
DrawRectX( -2.0, -2.0, 2.0, 2.0, -2.0);
DrawRectX( -2.0, -2.0, 2.0, 2.0, 2.0);
glBindTexture(GL_TEXTURE_2D, texture[2]);
DrawRectZ( -2.0, -2.0, 2.0, 2.0, -2.0);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-2.0, -2.0,-2.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(2.0, -2.0, -2.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-2.0, -2.0, 2.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(2.0, -2.0, 2.0);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[2]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-2.0, 2.0,-2.0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(2.0, 2.0, -2.0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-2.0, 2.0, 2.0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(2.0, 2.0, 2.0);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[2]);
DrawRectX( -2.0, -2.0, 2.0, 2.0, -2.0);
DrawRectX( -2.0, -2.0, 2.0, 2.0, 2.0);
glBindTexture(GL_TEXTURE_2D, texture[2]);
DrawRectZ( -2.0, -2.0, 2.0, 2.0, -2.0);
Нужно вынести в display. Почему - читаем в мане