Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Обязательно ли нужен метод main() чтобы этот код работал?

ФермаКактусов Высший разум (189407), закрыт 1 месяц назад
 #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;
}
Дополнен 1 месяц назад
Лучший ответ
Chromatic Scale Искусственный Интеллект (148250) 1 месяц назад
Ошибки, которые вы видите, указывают на то, что ваша программа не связывается правильно с библиотекой 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;
}

Убедитесь, что у вас установлены необходимые библиотеки и что они правильно связаны в процессе сборки.
Остальные ответы
жоп мегатроний Профи (585) 1 месяц назад
не знаю. не разбираюсь
жоп мегатронийПрофи (585) 1 месяц назад
извини
Def Просветленный (46574) 1 месяц назад
Нужна точка входа, в качестве которой может быть метод main, WinMain или произвольная функция (прототип которой, однако, обязан соответствовать типу проекта).
Похожие вопросы