c++ - 无效重载与 glutDisplayFunc 不兼容

标签 c++ opengl visual-c++ glut

目前,我正在使用 GLUT 编写一个小型引擎。我一直被困在这个 super 令人沮丧的问题上。我在网上看到的所有解决方案似乎都没有帮助我。

我有一个名为 glutDisplayFunc 的函数:

void Window::Initialize(int argc, char ** argv, void* renderFunc)

renderFunc 是我传递给 glutDisplayFunc 的参数,如下所示:

glutDisplayFunc(renderFunc);

尽管我收到此错误,但每当我将其放入时:

argument of type "void " is incompatible with parameter of type "void ()()"

我完全不知道如何解决这个问题。

无论出于何种原因,您可能需要额外的代码来调试它。这是我正在处理的渲染和初始化函数。

void Window::Initialize(int argc, char ** argv, void* renderFunc)
{
    Debug debug;
    Window localWindow;
    Core::Shader_Loader shaderLoader;
    program = shaderLoader.CreateProgram("shader.vert", "shader.frag");

    system("title Sandbox");



    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowPosition(WindowPosX, WindowPosY);
    glutInitWindowSize(WindowWidth, WindowHeight);
    glutCreateWindow(title);

    glutInit(&argc, argv);
    glewInit();
    if (glewIsSupported("GL_VERSION_4_3"))
    {
        debug.Message("GLEW Version 4.3");
    }
    else
    {
        debug.Error(101, "GLEW 4.3 is not supported");
    }

    glEnable(GL_DEPTH_TEST);
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

    glutDisplayFunc(renderFunc);
    glutMainLoop();
}

void Window::RenderScene(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glClearColor(0.0, 0.0, 0.0, 1.0);

    glUseProgram(program);
    glDrawArrays(GL_TRIANGLES, 0, 3);

    glutSwapBuffers();
}

最佳答案

glutDisplayFunc将指向函数的指针作为其参数。 void* renderFunc 声明了一个指向数据(未知类型)的指针。这些类型不兼容。

你需要:

void Window::Initialize(int argc, char ** argv, void (*renderFunc)())

关于c++ - 无效重载与 glutDisplayFunc 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38960347/

相关文章:

c++ - C/C++ : Converting hexadecimal value in char to integer

c++ - 使用Kinect调用Open Gl的鼠标功能

cocoa - Mac OpenGL 应用程序中的控制台

c# - 使用 Visual Studio 2013 构建 C/C++ DLL 并将其交付到 C# 应用程序中

c++ - 在 C++ (MSVC) 中打印堆栈跟踪?

c++ - 基本控制台打印程序

c++ - 如何将 const std::string& 转换为整数?

c++ - 动态 C++ 模型和 QML ListView

c++ - OpenGL 纹理的 OpenCV 图像加载

c++ - OpenGL - gluOrtho2d 和 glLoadIdentity?