c++ - GLUT 回调函数的问题

标签 c++ glut

嘿,

我正在尝试使用 C++ 使用 OpenGL 和 CUDA 创建场景,但是当我尝试传递函数进行初始化时收到错误消息。 这是我的标题:

class SimpleScene
{
public:

    SimpleScene();
    ~SimpleScene();
    void computeFPS();
    void render();
    void display();
    void idle();
    void keyboard(unsigned char key, int x, int y);
    void reshape(int x, int y);
    void cleanup();
    void initGLBuffers();
    uchar *loadRawFile(const char *filename, size_t size);
    void initGL(int *argc, char **argv);
    int chooseCudaDevice(int argc, char **argv, bool bUseOpenGL);
    void runAutoTest(const char *ref_file, char *exec_path);
    void loadVolumeData(char *exec_path);
};

在我的 .cpp 文件中,我有类似这样的内容,并且这个错误是相同的:

void SimpleScene::initGL(int * argc, char ** argv)
{
SimpleScene* obj = new SimpleScene;
// initialize GLUT callback functions
glutInit(argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowSize(width, height);
glutCreateWindow("CUDA 3D texture");
glutDisplayFunc(obj->display);
glutKeyboardFunc(obj->keyboard);
glutReshapeFunc(obj->reshape);
glutIdleFunc(obj->idle);

if (!isGLVersionSupported(2, 0) || !areGLExtensionsSupported("GL_ARB_pixel_buffer_object"))
    {
    fprintf(stderr, "Required OpenGL extensions are missing.");
    exit(EXIT_FAILURE);
    }
}

问题在于显示、空闲、键盘和整形。报错是这样的:

Error   C3867   'SimpleScene::display': non-standard syntax; use '&' to create a pointer to member  
Error   C3867   'SimpleScene::idle': non-standard syntax; use '&' to create a pointer to member     
Error   C3867   'SimpleScene::keyboard': non-standard syntax; use '&' to create a pointer to member 
Error   C3867   'SimpleScene::reshape': non-standard syntax; use '&' to create a pointer to member  

最佳答案

根据经验,我可以告诉您过剩在 OOP 体系结构中的效果非常糟糕,另一个问题的答案可以帮助解决 C++ 指针问题,这是它的链接 How to make a pointer to a method in class .

关于c++ - GLUT 回调函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40067758/

相关文章:

c++ - 线程体系结构问题 C++ 消息传递

C++::Set value 函数在函数内部设置,但后面跟着 Get 函数,设置值消失了

c++ - 函数包含未命名参数

glut - 如何用 WinMain() 替换 main()?

c++ - 'Qt +=charts' 已在 Qt 6.0 中删除。我现在如何绘制折线图?

c++ - 缩短 C++ 枚举成员的路径(使用 typedef 或 typename),用作模板参数

c++ - 简单的OpenGL GUI框架用户交互建议?

c++ - 如何在 OpenGL/C++ 中绘制一个居中的字符串?

c++ - GLUT OpenGL Cube 拉伸(stretch)错误

c - 为什么 GlutPostRedisplay 和 sleep 函数在此代码中不起作用?