GLFWを使ってOpenGLとオブジェクト指向を両立させる

glfw-class.png

GLFW3からは、ウィンドウにユーザーの好きなポインタを入れる機能が追加されたので、
OpenGLとオブジェクト指向を両立させることができます。
使う関数はこの2つ

glfwSetWindowUserPointer() で好きなポインタをウィンドウに登録
glfwGetWindowUserPointer() で登録したポインタを取り出す

コールバック関数とクラスの両立で役に立つ。

static void wheel(GLFWwindow *_window,double _offsetx,double _offsety){
        cout<<"offsetx="<<_offsetx<<", offsety="<<_offsety<<endl;
        ((OpenGL*)glfwGetWindowUserPointer(_window))->zoom(_offsety);
 
    }
static void reshape(GLFWwindow *_window, int _width, int _height){
    ((OpenGL*)glfwGetWindowUserPointer(_window))->reshape(_width,_height);
}
...
GLFWwindow* glfw_window = glfwCreateWindow(250,250, "タイトル", NULL, NULL);
....
    glfwSetScrollCallback(glfw_window,wheel);
    glfwSetWindowSizeCallback(glfw_window,reshape);
Bibliography

object-oriented opengl

サポートサイト Wikidot.com object-orientedopengl