目前,我正在使用 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/