Estoy usando MSVC++ y freeglut para usar OpenGL. Ahora, tengo una clase llamada Camera
, que es bastante simple, pero también contiene la función para la remodelación de mi ventana.Función de devolución de llamada en freeglut desde el objeto
Mi pregunta es: ¿cómo puedo configurar glutReshapeFunc(void (*callback)(int,int))
para mi función en mi cámara?
tengo el siguiente código, que no va a funcionar, debido a un error del compilador:
int main(int argc, char **argv)
{
Camera *camera = new Camera();
glutReshapeFunc(camera->ReshapeCamera);
}
y mi clase de la cámara es la siguiente con Camera.h:
class Camera
{
public:
Camera(void);
~Camera(void);
void ReshapeCamera(int width, int height);
};
Tal vez esta es solo una pregunta de devolución de llamada más general, pero lo único que encontré en Internet fue crear una clase de envoltura alrededor de la devolución de llamada. Pero no parece que esto debería ser tan difícil. Gracias de antemano.
Así que creé una función estática en mi clase ahora, pero parece que no se puede convertir de __thiscall a __decl. 'Error 1 error C2664: 'glutReshapeFunc': no se puede convertir el parámetro 1 de 'void (__thiscall Camera :: *) (int, int)' a 'void (__cdecl *) (int, int)''. Y agregar un __cdecl explícito da una advertencia sobre la 'Camera ::' -part. – Marnix
@Marnix: El '__thiscall' me sugiere que' glutReshapeFunc' no está declarado como 'static'. – Thomas
@Thomas: No, glutReshapeFunc es probablemente una función en C, la función que proviene de mi clase de cámara es estática, pero tiene por lo tanto otro espacio de nombres. Entonces no parece entender esto. – Marnix