【发布时间】:2016-08-15 17:58:01
【问题描述】:
目前,我正在使用 GLUT 编写一个小型引擎。我一直被困在这个非常令人沮丧的问题上。我在网上看到的所有解决方案似乎都没有帮助我。
我有一个名为 glutDisplayFunc 的函数:
void Window::Initialize(int argc, char ** argv, void* renderFunc)
renderFunc 是我传递给 glutDisplayFunc 的参数,如下所示:
glutDisplayFunc(renderFunc);
每当我把它扔进去时,虽然我得到了这个错误:
“void ”类型的参数与“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();
}
【问题讨论】:
-
我很久没有用 C++ 编写代码了,但是你的错误似乎告诉你
glutDisplayFunc(renderFunc);没有返回任何东西。因此,如果您将其用作参数,它将失败,因为它没有给您任何回报。
标签: c++ opengl visual-c++ glut