GLFWwindow의 크기가 조정 된 후 호출되는 GLFWwindowsizefun 콜백 함수 설정을위한 glfwSetWindowSizeCallback 함수가 있습니다. 이제 문제는 내 사용자 인터페이스 라이브러리에서 Window
이라는 클래스가 있고 GLFWwindow glfw_window;
glm::mat4 ortho_proj;
크기 콜백 함수에서 ortho_proj = glm::ortho(0.0f, (float)_width, (float)_height, 0.0f, -1.0f, 1.0f);
을하고 싶지만 콜백 함수가 고정되어 있기 때문에 불가능합니다. Window
클래스의 멤버가 아니며 AFAIK 클래스가 될 수 없습니다. 따라서 콜백 함수에서 변수 ortho_proj
에 액세스하기위한 유일한 방법은 변수를 정적으로 설정하는 것입니다. 그러나이 경우에는 단일 프로그램에서 여러 창을 만드는 데 문제가 발생하기 때문에 필요하지 않습니다.OOP의 GLFWwindowsizefun 접근성
class Window
{
private:
GLFWwindow* glfw_window;
mat4 ortho_proj;
public:
Window(int _width, int _height, const char* _title);
bool update();
void render();
~Window();
};
이것은 나쁜 콜백 함수
void window_size_callback(GLFWwindow* _window, int _width, int _height)
{
ortho_proj = ortho(0.0f, (float)_width, (float)_height, 0.0f, -1.0f, 1.0f);
}
(ortho_proj 공공 및 정적 될 경우 일하는 것이 내가
ortho_proj
전에
Window::
를 추가하는 경우)입니다 :
이
클래스 정의입니다따라서 콜백 함수에서 ortho_proj
변수에 액세스하는 방법이 있습니까? 아니면 콜백 함수가 어떻게 든 클래스 멤버 일 수 있습니까? 또는 창 크기를 조정 한 경우 부울 반환 GLFW 함수가 있습니까?
'Window' 클래스에서 허용하고 싶은 인터페이스는 무엇입니까? 거기에서 사용자 정의 할 수있게하려면 어떻게 하시겠습니까? – Shoe