這是我當前的設置:我正在使用SDL(目前在Linux上)進行OpenGL渲染。我初始化SDL(SDL_Init
)並在主線程中創建應用程序窗口(SDL_CreateWindow
)並將其傳遞給第二個線程。第二個線程從它創建一個OpenGL上下文(SDL_GL_CreateContext
)並啓動一個渲染循環,而主線程監聽事件。我認爲重要的是要注意GL呼叫完全侷限於第二個線程;實際上我的大部分應用程序邏輯都發生在那裏,主線程只負責處理通過SDL發送的事件。SDL 2.0:在主線程中創建窗口,但在單獨的窗口中進行所有渲染
原來我是這樣做的另一種方式,但事實證明,你不能處理除OSX主窗口以外的任何事件,也可能是Windows,所以我將它切換到兼容這兩個在未來。
我是否應該擔心這在OSX/Windows上不起作用?在Linux上,我什麼都沒有。互聯網上有很多關於上下文共享和從多個線程進行GL調用的信息,但我想要做的就是在一個不是主要線程的線程中執行OpenGL。我不想繼續編寫我的應用程序,以後才發現它不能在其他地方使用。
聽起來沒問題。還有另一個線程在這裏... [鏈接](http://stackoverflow.com/questions/6172020/opengl-rendering-in-a-secondary-thread?rq=1) – user1961169
@ user1961169謝謝,我已閱讀你鏈接的線程。那個人在Linux/X11上遇到了麻煩,對我而言,這對我來說非常完美,它只是我不確定的OSX/Win32。不過,該主題中有一些評論意味着在這些平臺上它應該沒問題,所以感謝提醒我! – Ancurio
唯一要保證的是操作系統的東西調用在App主線程中。如果不是,那麼它會創建經常奇怪的行爲(在展臺贏和Linux),如句柄的失效,偶爾的例外,圖形工件,場合GUI錯誤等... – Spektre