Задание
- Изобразить текстурированный икосаэдр, расположенный на кубе, стоящем на плоскости
- Реализовать освещение (один источник)
- Рассчитать и изобразить перекатывание икосаэдра по верхней грани куба с падением на плоскость
Функционал программы
- перекатывание икосаэдра по грани куба с имитацией веса икосаэдра
- падение икосаэдра с куба при выходе за границы грани
- управление движением икосаэдра с клавиатуры
- управление движением камеры с клавиатуры
Фрагмент программного кода
// Функция отрисовки кадра static void display(void) { // Очистка буферов glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Установка цвета источника освещения glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); // Установка положения источника освещения glLightfv(GL_LIGHT0, GL_POSITION, light_position); // Сброс матрицы glLoadIdentity(); // Установка камеры gluLookAt(camera_x, camera_y, 8, 0, 0, 0, 0, 0, 1); // Привязка текстуры для плоскости glBindTexture(GL_TEXTURE_2D, texture1); // Рисование плоскости drawPlane(); // Привязка текстуры для куба glBindTexture(GL_TEXTURE_2D, texture2); // Рисование куба cube.Draw(); // Привязка текстуры для плоскости glBindTexture(GL_TEXTURE_2D, texture3); // Рисование икосаэдра icosahedron.Draw(); // Вывод кадра на экран glutSwapBuffers(); }
Пояснения по запуску программы
Для открытия и запуска проекта необходима Visual Studio C++ версии не ниже 2019 и установленную библиотеку freeglut
shogun