Как использовать GLUT с libdispatch?

И GLUT, и libdispatch имеют свои собственные циклы обработки событий, которые вызываются с помощью функций, которые никогда не возвращаются: glutMainLoop(); а также dispatch_main();соответственно.

Я пробовал:

dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(q, ^{
    glutMainLoop();
});

dispatch_main();

... и окно отображается, но не отвечает ни на какие события или перерисовывается после первоначального вызова функции, указанной с помощью glutDisplayFunc(),

Как я могу заставить GLUT и libdispatch хорошо играть вместе?

1 ответ

Решение

Ты не можешь Они оба хотят владеть циклом обработки сообщений. И поскольку существует только один такой цикл, они оба не могут владеть им.

Если бы вы использовали FreeGLUT, вы могли бы найти способ заставить это работать. Но лучшей альтернативой было бы просто использовать GLFW.

Другие вопросы по тегам