2015-12-16 7 views
1

Если бы я, чтобы установить функцию обратного вызова в GLFW, скажемИзвлечение данных из функции обратного вызова

glfwSetCursorPosCallback(window, mouse); 

самый очевидный способ получения позиции курсора будет

vec2 m; 

void mouse (GLFWwindow* window, GLdouble x, GLdouble y) 
{ 
    m = vec2 (x, y); 
} 

Однако, я бы предпочел для этого, не используя глобальную переменную. Это можно сделать?

+0

Что вы хотите 'M' быть, тогда? Местный? Член переменной? – LogicStuff

ответ

2

можно связать указатель пользователя к GLFWindow:

struct MyWindowData 
{ 
    GLdouble x; 
    GLdouble y; 
} 

-

MyWindowData windowData; 

glfwSetWindowUserPointer(window, &windowData); 
glfwSetCursorPosCallback(window, mouse); 

-

void mouse (GLFWwindow* window, GLdouble x, GLdouble y) 
{ 
    MyWindowData *dataPtr = (MyWindowData *) glfwSetWindowUserPointer(window ); 
    dataPtr->x = x; 
    dataPtr->y = y; 
}