OpenGL에서 내 마우스 동작을 기반으로 카메라의 매개 변수를 업데이트하려고합니다. GLFW를 사용하고 있습니다. GLFW에 미리 정의 된 이벤트 핸들러가 있습니다. mouseMoveCallback() 함수를 등록하는 데 사용하는 미리 정의 된 이벤트 핸들러는C++의 정적 함수에서 비 정적 멤버 업데이트
glfwSetCursorPosCallback(window, mouseMoveCallback);
입니다. 클래스에서 카메라를 선언했고 Camera 클래스의 인스턴스가 프로그램에서 사용되었습니다. Camera 클래스의 멤버는 정적이 아니지만 mouseMoveCallback 함수는 정적입니다. 정적 함수가 비 정적 멤버에 액세스하는 것은 불가능하다는 것을 알고 있습니다. Camera 클래스의 비 정적 인스턴스 멤버를 업데이트 할 수있는 가장 좋은 방법은 무엇입니까?
전역을 사용하고 mouseMoveCallback() 함수를 사용하여 전역을 업데이트 한 다음 비 정적 멤버 함수에서 업데이트 된 전역 값을 읽는 등 필요한 기능을 얻을 수 있습니다. 그러나 키보드 입력과 같이 더 많은 매개 변수를 추가하려는 경우 키보드 입력과 같은 매개 변수를 추가 할 때 이렇게 빨리 못 생길 수 있습니다.이 작업을 수행하는 데 더 좋은 방법이 있는지 알고 싶습니다.
:
mouseMoveCallback
이후은 C 라이브러리에서 호출, 그것은 C 결합을 가지고 그렇다면 카메라 객체를 어디서 업데이트 할 것인가? 이 클래스는 문제가되는 클래스가 아닙니다. 객체를 어딘가에 인스턴스화했으며이 객체에 업데이트하려는 멤버가 있습니다. 기본적으로 개체에 접근 할 수있는 방법을 디자인해야합니다. 개체를 전역, 단일 패턴 등으로 저장했는지 여부에 관계없이 액세스 할 수 있어야합니다. – PaulMcKenzie
Camera 객체는 콜백 및 정적 함수 mouseMoveCallback()을 설정하는 다른 클래스의 함수에서 인스턴스화됩니다. – shaveenk
전역 함수를 사용하고 mouseMoveCallback() 함수를 사용하여 필요한 기능을 얻을 수 있습니다. 비 정적 멤버 함수에서 업데이트 된 전역 값을 읽습니다. 그러나 이것은 키보드 입력과 같이 더 많은 매개 변수를 추가하고자 할 때 추악 할 정도로 빨리 빠져 나올 수 있습니다. 그래서 이것을 수행하는 더 좋은 방법이 있는지 알고 싶었습니다. – shaveenk