Как да използвам 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 да играят добре заедно?


person smokris    schedule 23.09.2012    source източник
comment
Еха. glut все още се използва? Обзема ме носталгично чувство... Това за междуплатформен проект ли е?   -  person Lorenz Lo Sauer    schedule 23.09.2012
comment
Просто търся прост начин да изведа прозорец, в който да изобразя OpenGL, използвайки само C (без Objective-C).   -  person smokris    schedule 23.09.2012


Отговори (1)


не можеш И двамата искат да притежават цикъла за обработка на съобщения. И тъй като има само един такъв цикъл, те не могат и двамата да го притежават.

Ако сте използвали FreeGLUT, можете да намерите начин това да работи. Но по-добра алтернатива би била просто да използвате GLFW.

person Nicol Bolas    schedule 23.09.2012
comment
Благодаря. GLFW наистина изглежда като по-добър вариант. - person smokris; 23.09.2012
comment
GLFW също не работи с libdispatch — вижте последващи действия на stackoverflow.com/q/12570394/64860. - person smokris; 24.09.2012