GLUT: un modo per aggiungere un hook "leggibile da file" al loop degli eventi?
-
06-07-2019 - |
Domanda
Vorrei aprire un socket e appendere un evento leggibile nel ciclo degli eventi GLUT ... hai qualche idea su come farlo? Il codice GLUT standard portatile è il migliore, ma sono aperto anche a hack specifici della piattaforma.
Grazie!
Soluzione
GLUT non lo supporta molto bene. Vedi FAQ # 18 di GLUT
Puoi registrare una funzione inattiva con glutIdleFunc e nella funzione inattiva esegui il polling del tuo socket per vedere se sono disponibili nuovi dati. Per evitare il blocco quando leggi dal tuo socket, devi impostare il tuo socket come non-block chiamando:
#include <unistd.h>
#include <fcntl.h>
...
sockfd = socket(PF_INET, SOCK_STREAM, 0);
fcntl(sockfd, F_SETFL, O_NONBLOCK);
(Tratto da Beej's Guide to Networking )
L'inconveniente di questo approccio è che la tua app controllerà lo stato del socket 60 volte al secondo, piuttosto che aspettare che arrivino i dati di rete.