Я решил, что всякий раз, когда пользователь пытается изменить размер экрана, экран должен go возвращаться к заданным размерам, поэтому это облегчает мою жизнь при рисовании узлов графа. На MA C мое приложение работает нормально, но на Linux оно вызывает infinte l oop в функции изменения размера, и я не знаю почему. После некоторых вызовов l oop я получил ошибку сегментации (ядро сброшено)
вот моя конфигурация opengl (основная функция)
glutInit(&argc, argv);
glutInitDisplayMode ( GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT);
glutInitWindowPosition(100, 100);
glutCreateWindow(APP_NAME);
glClearColor(0.0, 0.0, 0.0, 0.0); // black background
glMatrixMode(GL_PROJECTION); // setup viewing projection
glLoadIdentity(); // start with identity matrix
glOrtho(0.0, 50.0, 0.0, 50.0, 0.0, 0.1); // setup a 50x50 viewing world
glutDisplayFunc(display);
glutReshapeFunc(resize);
glutMainLoop();
и вот мои реализации функций отображения и изменения размера
void display() {
Matrix* distanceMatrix = NULL;
PalleteNodePosition* nodesPositions = NULL;
distanceMatrix = fromFile(inputFileName);
printf("Finish input parsing...\n");
nodesPositions = calculateNodesPositions(distanceMatrix);
printf("Finish calculating nodes position on screen...\n");
glClear( GL_COLOR_BUFFER_BIT);
drawNodes(nodesPositions, distanceMatrix->width);
drawLink(10, 10, 18, 18);
glFlush();
}
void resize(int w, int h){
glutReshapeWindow(WINDOW_WIDTH, WINDOW_HEIGHT);
}
Когда я печатаю вызов изменения размера, я получил w, равный WINDOW_WIDTH, и h, равный WINDOW_HEIGHT, как и ожидалось, так почему приложение каждый раз изменяет размер экрана?