Я использую opengl в кодовых блоках для создания одного проекта. Я хочу сначала построить многоугольник с n пиками, но эти n пиков, я хочу, чтобы они были объявлены пользователем. Мой код на данный момент:
#include<GL/glut.h>
#include<stdio.h>
#include<stdlib.h>
void init(void){
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D (0.0,640.0,0.0,480.0);
}
void polygon(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,0.0);
int p1[]={200,100};
int p2[]={400,100};
int p3[]={550,300};
int p4[]={400,480};
int p5[]={200,480};
int p6[]={50,300};
glBegin (GL_LINE_LOOP);
glVertex2iv (p1);
glVertex2iv (p2);
glVertex2iv (p3);
glVertex2iv (p4);
glVertex2iv (p5);
glVertex2iv (p6);
glEnd ( );
glFlush();
}
int main(int argc,char** argv){
int peaks = 0;
printf("Give the number of your peaks that you want to draw: ");
scanf("%d",&peaks);
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(500,200);
glutInitWindowSize(640,480);
glutCreateWindow("Internal Checkpoints");
init();
glutDisplayFunc(polygon);
glutMainLoop();
}
В основном я читаю, сколько пиков хочет пользователь, но я не могу отправить его в свою функцию многоугольника, потому что glutDisplayFun c хочет в качестве аргумента пустое веселье c. Также я не могу использовать scanf в своей функции многоугольника, потому что это создает некоторые проблемы при запуске. Так есть ли какое-то решение для этого?