Задание:
На основе работ № 3 и № 4 создать сцену с двумя движущимися фигурами, а также стенами, потолком и полом. Эффекты отражения, теней и тумана использовать не требуется. Необходимо наложить текстуры на все объекты сцены: стены, пол, потолок, две фигуры. Для объектов GLU и GLUT использовать автоматическую генерацию текстурных координат, при этом для объектов GLUT выбрать наиболее подходящий режим (линейный по объекту, линейный по наблюдению, сферический). В программе предусмотреть выбор фильтрации текстур: трилинейная и анизотропная фильтрация. Также пользователь должен иметь возможность выбора налагаемых текстур для объектов сцены. Для объектов, создаваемых не с помощью функций библиотек GLU и GLUT использовать массивы вершин, содержащие координаты вершин, коды цвета, нормали и текстурные координаты. Массив вершин разместить в буферных объектах видеопамяти (в программе должна быть предусмотрена проверка на наличие соответствующего расширения; в случае отсутствия использовать обычное размещение массивов вершин).
Функция прорисовки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
if (glBuffersSupported) { BindBuffer(1,pyramid_buffer_ID); glInterleavedArrays(GL_T2F_N3F_V3F,sizeof(float)*8,0); glDrawArrays(GL_QUADS,0,4*6); BindBuffer(GL_ARRAY_BUFFER,room_buffer_ID); glInterleavedArrays(GL_T2F_N3F_V3F,sizeof(float)*8,0); glDrawArrays(GL_QUADS,0,4*6); } else { glInterleavedArrays(GL_T2F_N3F_V3F,sizeof(float)*8,pixels); glDrawArrays(GL_QUADS,0,4*6); glInterleavedArrays(GL_T2F_N3F_V3F,sizeof(float)*8,room_pixels); glDrawArrays(GL_QUADS,0,4*6); } |
Вывод: В OpenGL использовать текстуры достаточно проблематично, так как нет готовых функций загрузки
Скачать ZIP-архив с исходными кодами