Задание
- Изобразить текстурированный икосаэдр, расположенный на кубе, стоящем на плоскости
- Реализовать освещение (один источник)
- Рассчитать и изобразить перекатывание икосаэдра по верхней грани куба с падением на плоскость
Функционал программы
- перекатывание икосаэдра по грани куба с имитацией веса икосаэдра
- падение икосаэдра с куба при выходе за границы грани
- управление движением икосаэдра с клавиатуры
- управление движением камеры с клавиатуры
Фрагмент программного кода
// Функция отрисовки кадра
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
Телеграм
-