我想根据我在OpenGL中的鼠标移动来更新我的相机参数。我正在使用GLFW。有在GLFW在C++中更新静态函数中的非静态成员
glfwSetCursorPosCallback(window, mouseMoveCallback);
一个预定义的事件处理程序,我使用注册mouseMoveCallback()函数。我已经在一个类中声明了我的相机,并且在该程序中使用了Camera类的一个实例。 Camera类中的成员是非静态的,但mouseMoveCallback函数是静态的。我知道静态函数不可能访问非静态成员。我可以更新Camera类的非静态实例的成员的最佳方式是什么?
我能够通过使用全局变量和使用mouseMoveCallback()函数来更新全局,然后从非静态成员函数读取更新的全球价值,以获得所需的功能。但是,当我想添加更多的参数来读取时,如键盘输入等,这会变得很难看,所以我想知道是否有更好的方法来做这件事。
那么你想更新的摄像头'对象'在哪里?这不是一个'class'问题 - 你已经在某个地方实例化了一个对象,并且这个对象有你想要更新的这些成员。您基本上需要设计一种方法来获取对象,无论是将其存储为全局单例模式等,然后访问它。 – PaulMcKenzie
Camera对象是在函数实例化(另一个类的),我还设置了回调和静态函数mouseMoveCallback() – shaveenk
我能够通过使用全局变量和使用mouseMoveCallback()函数来更新,以获得所需的功能全局变量,然后从非静态成员函数中读取更新的全局值。但是,当我想添加更多的参数来读取时,如键盘输入等,这可能会变得很难看。因此,我想知道是否有更好的方法来做到这一点 – shaveenk