Я создал класс С++ (myPixmap
), чтобы инкапсулировать работу, выполняемую набором инструментов OpenGL GLUT. Элемент-член display()
класса содержит большую часть кода, необходимого для настройки GLUT.
void myPixmap::display()
{
// open an OpenGL window if it hasn't already been opened
if (!openedWindow)
{
// command-line arguments to appease glut
char *argv[] = {"myPixmap"};
int argc = 1;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(30, 30);
glutCreateWindow("Experiment");
glutDisplayFunc(draw);
glClearColor(0.9f, 0.9f, 0.9f, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glutMainLoop();
openedWindow = true;
}
}
Функция отображения, переданная в glutDisplayFunc()
, является другой функцией-членом класса:
void myPixmap::draw(void)
{
glDrawPixels( m,n,GL_RGB,GL_UNSIGNED_BYTE, pixel );
}
Однако gcc 4.2.1 в Mac OS X 10.6.4 отказывается компилировать этот код, утверждая, что:
argument of type 'void (myPixmap::)()' does not match 'void (*)()'
Есть ли способ использования инструментария GLUT внутри функции-члена класса или я должен вызвать все функции GLUT в функции main
программы?