我使用MSVC++和freeglut为了使用openGL。现在,我有一个名为Camera
的类,它非常简单,但它也具有重塑我的窗口的功能。从对象的freeglut回调函数
我的问题是:如何在我的相机中设置glutReshapeFunc(void (*callback)(int,int))
到我的功能?
我有下面的代码,这是行不通的,因为编译器错误的,:
int main(int argc, char **argv)
{
Camera *camera = new Camera();
glutReshapeFunc(camera->ReshapeCamera);
}
和我的相机类看起来像这样Camera.h:
class Camera
{
public:
Camera(void);
~Camera(void);
void ReshapeCamera(int width, int height);
};
也许这只是一个更普遍的回调问题,但我在互联网上发现的唯一的东西是围绕回调创建一些包装类。但看起来这不应该如此艰难。 在此先感谢。
所以我现在在我的类中创建了一个静态函数,但它似乎无法从__thiscall转换为__decl。错误1错误C2664:'glutReshapeFunc':无法将参数1从'void(__thiscall Camera :: *)(int,int)'转换为'void(__cdecl *)(int,int)'`。添加一个明确的__cdecl会给出一个关于`Camera ::`-part的警告。 – Marnix 2011-02-16 10:43:22