我編碼的Qt(4.8.2)(VS 2008)的圖形應用程序,使用QGLWidget來繪圖,因此OpenGL的。這是應用程序的簡短描述:這是一個物理模擬。它由2個線程組成。主要應用線程處理現場繪圖(QGLWidget來繪圖子類)和事件。計算線程正在循環計算模擬的下一步。 現在......我想與使用模擬光標(拖動對象或類似的東西)進行交互。自從我決定不這樣做在場景智能拍攝光線與一些空間空間分解(也許我將不得不畢竟做)一起,我想計算線程像這樣的東西執行:OpenGL的多線程,與glGet *問題導致
glGetDoublev(GL_MODELVIEW_MATRIX, modelviewMatrix);
glGetDoublev(GL_PROJECTION_MATRIX, projectionMatrix);
glGetIntegerv(GL_VIEWPORT, viewport);
gluProject(px, py, pz, modelviewMatrix, projectionMatrix, viewport, &x, &y, &z);
在爲了得到畫面[X; Y]所述的座標[PX;吡啶; PZ]點和在計算的模擬的下一步驟中使用它們。那麼,原來的主線程總是得到正確modelviewMatrix和projectionMatrix陣列,但是當這是由計算線程執行的,它得到垃圾矩陣數據。我想查詢的OpenGL,鎖定任何OpenGL的行動,以便矩陣應該是不變之前很多事情...運行makeCurrent(),但沒有成功。我想知道,這甚至有可能嗎?繪製場景後,OpenGL是否保留矩陣?有沒有辦法讓這段代碼線程安全?
謝謝:-D不幸的是我不知道我做了什麼,使其工作那段時間,但你的建議是相當即期。我完全忘記了這個問題,隨機回到了個人資料 - 所以我在這裏標記爲正確的答案。 – dzuremar