When I try to integrate a Tessellation Object in a MFC application I get the following fault message:
gluTessCallback: third parameter from void in void (__stdcall *)(void) not convertible.
I using the same procedure like in the programm
tesswind.c:
tobj = gluNewTess();
gluTessCallback(tobj, GLU_TESS_VERTEX, glVertex3dv);
gluTessCallback(tobj, GLU_TESS_BEGIN, (beginCallback(GL_TRIANGLES)));
gluTessCallback(tobj, GLU_TESS_END, endCallback);
gluTessCallback(tobj, GLU_TESS_ERROR, errorCallback);
GLdouble currentWinding = GLU_TESS_WINDING_ODD;
list = glGenLists(0);
MakeNewLists();
}
void CALLBACK COpenGLFeatures::errorCallback(GLenum errorCode)
{
}
void CALLBACK COpenGLFeatures::endCallback(void)
{
glEnd();
}
Any idea ? Let it me know.
Ulrich
system
2
In the class, declare the callback functions as
class XXXXX
{
static void CALLBACK beginCallback(GLenum which);
static void CALLBACK endCallback(GLenum error);
static void CALLBACK errorCallback();
}
In the CPP file, you don’t need to put CALLBACK, but I guess you can leave them in
void COpenGLFeatures::errorCallback(GLenum errorCode)
{
}
and you need to do function casting
gluTessCallback(tobj, GLU_TESS_BEGIN, (GLvoid (CALLBACK*) ())&beginCallback);
gluTessCallback(tobj, GLU_TESS_END, (GLvoid (CALLBACK*) ()) &endCallback);
gluTessCallback(tobj, GLU_TESS_ERROR, (GLvoid (CALLBACK*) ()) &errorCallback);
and that should do it.
system
Closed
3
This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.