Я только начал изучать openGL пару часов назад для своей работы, и мне было поручено рендерить вогнутый многоугольник с использованием тесселяции. Я пытаюсь скомпилировать следующий код:
#ifndef CALLBACK
#define CALLBACK
#endif
#include "GL/gl.h"
#include "GL/glu.h"
void CALLBACK beginCallback(GLenum which);
void drawHook()
{
GLUtesselator* tessObj = gluNewTess();
gluTessCallback(tessObj, GLU_TESS_BEGIN, beginCallback);
}
void CALLBACK beginCallback(GLenum which)
{
glBegin(which);
}
, которое я получил из Руководства по программированию OpenGL, седьмое издание , с соответствующей главой также , доступной онлайн . Но возвращается следующая ошибка:
hook.cc:28: error: invalid conversion from ‘void (*)(GLenum)’ to ‘void (*)()’
hook.cc:28: error: initializing argument 3 of ‘void gluTessCallback(GLUtesselator*, GLenum, void (*)())’
Эта ошибка заставляет меня поверить, что третий аргумент gluTessCallback
должен быть функцией, которая не принимает аргументов, однако «официальная» ссылка openGL утверждает иное.
Я что-то здесь упускаю или книга неверна?