Ошибки, которые вы видите, указывают на то, что ваша программа не связывается правильно с библиотекой GLUT. Ошибки `undefined reference` означают, что компоновщик не может найти функции GLUT, которые вы пытаетесь использовать.
Чтобы исправить эту проблему, вам нужно убедиться, что ваша программа связывается с библиотекой GLUT. Если вы используете `g++` для компиляции вашей программы, вы можете добавить флаги `-lglut` и `-lGL` для связывания библиотек GLUT и OpenGL.
Вот пример команды для компиляции вашей программы с помощью `g++`:
```sh
g++ main.cpp -o Project1 -lglut -lGL
```
Эта команда сообщает компилятору скомпилировать `main.cpp`, связать его с библиотеками GLUT и OpenGL и создать исполняемый файл с именем `Project1`.
Если вы используете IDE, такую как Code::Blocks, вам нужно добавить эти библиотеки в настройки проекта. Вот как это можно сделать в Code::Blocks:
1. Откройте ваш проект в Code::Blocks.
2. Перейдите в "Project" -> "Build Options".
3. Выберите цель (например, "Debug" или "Release"), которую вы хотите настроить.
4. Перейдите на вкладку "Linker settings".
5. В разделе "Link libraries" добавьте `libglut.a` и `libGL.a` (или просто `glut` и `GL` в зависимости от вашей системы).
6. Примените изменения и пересоберите ваш проект.
Убедитесь, что библиотека GLUT установлена на вашей системе. В Ubuntu вы можете установить её с помощью:
```sh
sudo apt-get install freeglut3-dev
```
В Windows, возможно, вам нужно будет скачать библиотеку GLUT с её официального сайта и настроить вашу IDE для её использования.
Вот исправленная версия вашего кода для полноты:
#include
float angle = 0.0;
void drawTriangle() {
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.0, 0.0); // Красный цвет
glVertex2f(0.0, 1.0);
glColor3f(0.0, 1.0, 0.0); // Зелёный цвет
glVertex2f(-1.0, -1.0);
glColor3f(0.0, 0.0, 1.0); // Синий цвет
glVertex2f(1.0, -1.0);
glEnd();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glRotatef(angle, 0.0, 0.0, 1.0);
drawTriangle();
glutSwapBuffers();
}
void timer(int) {
glutPostRedisplay();
glutTimerFunc(1000 / 60, timer, 0);
angle += 0.8;
if (angle > 360.0) {
angle = angle - 360.0;
}
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowPosition(200, 100);
glutInitWindowSize(500, 500);
glutCreateWindow("OpenGL - Rotating Triangle");
glutDisplayFunc(display);
glutTimerFunc(0, timer, 0);
glutMainLoop();
return 0;
}
Убедитесь, что у вас установлены необходимые библиотеки и что они правильно связаны в процессе сборки.