Я пытаюсь нарисовать несколько треугольников в 3d и не могу выполнить функцию glutDisplayFunc()
. Вот мой код:OpenGL C++ Аргумент типа void несовместим с параметром типа void (*)()
Array из треугольников и размера.
int const trsize = (size-1)*(size-1)*2;
Triangle *trarr = new Triangle[trsize];
Код, где я пытаюсь вызвать функцию.
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutCreateWindow("Height Map");
Initialize();
glutDisplayFunc(Draw1(trarr, trsize));
glutMainLoop();
Draw1()
функция.
void Draw1(Triangle arr[], int size){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_LINES);
for(int i=0; i<size; ++i){
glVertex3d((GLdouble)arr[i].p1().x(), (GLdouble)arr[i].p1().y(), (GLdouble)arr[i].p1().z());
glVertex3d((GLdouble)arr[i].p2().x(), (GLdouble)arr[i].p2().y(), (GLdouble)arr[i].p2().z());
glVertex3d((GLdouble)arr[i].p3().x(), (GLdouble)arr[i].p3().y(), (GLdouble)arr[i].p3().z());
}
glEnd();
glFlush();
}
Я использую VS2012 и IntelliSense пишет: argument of type "void" is incompatible with parameter of type "void (*)()"
Я не знаю, почему DisplayFunc
нужен другой тип. С Draw()
функция без аргументов отлично работает.
Он отлично работает, спасибо. – user3051029