我想根據我在OpenGL中的鼠標移動來更新我的相機參數。我正在使用GLFW。有在GLFW在C++中更新靜態函數中的非靜態成員
glfwSetCursorPosCallback(window, mouseMoveCallback);
一個預定義的事件處理程序,我使用註冊mouseMoveCallback()函數。我已經在一個類中聲明瞭我的相機,並且在該程序中使用了Camera類的一個實例。 Camera類中的成員是非靜態的,但mouseMoveCallback函數是靜態的。我知道靜態函數不可能訪問非靜態成員。我可以更新Camera類的非靜態實例的成員的最佳方式是什麼?
我能夠通過使用全局變量和使用mouseMoveCallback()函數來更新全局,然後從非靜態成員函數讀取更新的全球價值,以獲得所需的功能。但是,當我想添加更多的參數來讀取時,如鍵盤輸入等,這會變得很難看,所以我想知道是否有更好的方法來做這件事。
那麼你想更新的攝像頭'對象'在哪裏?這不是一個'class'問題 - 你已經在某個地方實例化了一個對象,並且這個對象有你想要更新的這些成員。您基本上需要設計一種方法來獲取對象,無論是將其存儲爲全局單例模式等,然後訪問它。 – PaulMcKenzie
Camera對象是在函數實例化(另一個類的),我還設置了回調和靜態函數mouseMoveCallback() – shaveenk
我能夠通過使用全局變量和使用mouseMoveCallback()函數來更新,以獲得所需的功能全局變量,然後從非靜態成員函數中讀取更新的全局值。但是,當我想添加更多的參數來讀取時,如鍵盤輸入等,這可能會變得很難看。因此,我想知道是否有更好的方法來做到這一點 – shaveenk