具體而言,我在Linux環境中工作。這是一個opengl應用程序。在計算某些幾何圖形時,我希望能夠在創建新幾何圖形時觸發事件。在C中有沒有任何.NET等價的事件?OpenGL:創建新幾何圖形時發生火災事件
感謝, 毗溼奴
具體而言,我在Linux環境中工作。這是一個opengl應用程序。在計算某些幾何圖形時,我希望能夠在創建新幾何圖形時觸發事件。在C中有沒有任何.NET等價的事件?OpenGL:創建新幾何圖形時發生火災事件
感謝, 毗溼奴
活動中C的使用function callbacks實現。鏈接的問題有幾個解決如何編碼回調的答案。
我在Linux環境中有本地C應用程序。更具體地說,這是一個OpenGL應用程序。在創建某些輸入幾何時,我希望能夠調用一個事件,而不是顯式地調用一個函數。有沒有什麼類似於.NET中的事件? – 2010-07-22 18:19:32
@de costo - 請在您的實際問題中提供該信息。 – 2010-07-22 18:21:18
我添加了一個鏈接到我的文章。在另一個問題中的答案描述使用函數指針進行回調(第二個答案是特別相關的)。 – Cogwheel 2010-07-22 18:21:29
與gnome libraries或gtk+(它是建立在它的頂部)?你可以用函數指針自己做所有事情,但這是我唯一使用過的標準化事件和回調的「標準」C庫。也可能有其他人。
從.NET土地翻譯:
「事件」只是調用一個函數。爲了使其可配置,您需要將生成「事件」的東西作爲函數指針。函數指針被調用,並且當「事件」發生時是「完成」的事物。
「做」的事情是C和C++中的一個功能。
如果您只想在「事件」上「做」一件事情。你會傳遞一個指向你的函數的指針,這是你想對你的「事件」「做」的東西,作爲指向導致「事件」的事物的函數指針。這稱爲回調。其他職位有很多關於如何工作的例子。
如果您需要「做」多個在「事件」上的事情,您需要使用信號/插槽實施,如boost::signal。或者如果OpenGL有類似的東西,我會用它。在這種情況下,您有多個回調。
雖然我不能說我真的推薦使用它們,一個可能替代回調將是信號。
您可以使用signal
來說明如何處理特定的信號,並使用raise
來發送特定的信號。但是,請注意,在信號處理程序中可以執行的操作有嚴重的限制。很多代碼並沒有真正寫出來處理好信號,它的一大部分假設幾乎任何信號都意味着一個嚴重的問題,即在信號出現問題後繼續執行。
這似乎與OpenGL無關,因爲OpenGL本身不提供任何種類的事件機制。考慮重新提出這個問題。 – 2010-07-25 23:15:49
@馬爾特克拉森 - 我知道GLUT有事件發生。 http://www.opengl.org/resources/libraries/glut/ – 2010-08-01 21:18:02
@sheepsimulator GLUT是一個獨立的用戶界面庫,不屬於OpenGL。 – 2010-08-01 22:12:36