2012-03-15 18 views
2

我有一個程序更新它的程序輸出,然後程序的狀態改變。發生這種情況的時間(不是一個openGL定時器,一個在線程中實現),並且當鍵盤輸入從glut註冊(使用glutKeyboardFunc回調)。線程與過剩glutPostRedisplay被忽略

這兩個事件都會更新程序狀態並調用glutPostRedisplay;問題只在於鍵盤被按下時它確實做了任何事情。當計時器滴答時,顯示功能被忽略,但是當鍵盤被按下時,顯示功能被調用。

是否忽略其他線程?如果是的話,是否有辦法讓它註冊它們。

回答

6

您不能調用glutPostRedisplay或大多數其他GLUT函數,而不是其中一個GLUT被初始化的線程。GLUT是而不是線程安全。

+0

謝謝,我想不得不尋找一個新的lib – 111111 2012-03-15 18:59:43

+0

@111111:或者你可以使用線程安全的信號系統讓GLUT線程知道它需要渲染。 – 2012-03-15 19:11:42

+1

如果我添加了一個空白的glut idel func,這樣它就檢查glutpostredisplay是否調用了,但是它使CPU飽和了,你有更好的主意瞭解如何通過輪詢檢查循環來通知過剩。 – 111111 2012-03-15 19:22:56