2010-09-12 29 views
0

J'ai enregistré un rappel à l'aide:GLU Tesselator dit: « Il faut combiner rappel » Mais je défini un rappel

gluTessCallback(tess, GLU_TESS_COMBINE, (GLvoid(*)()) &scbCombine); 

scbCombine est une fonction directement dans le même fichier .cpp:

void CALLBACK scbCombine(const double newVertex[3], const double *neighborVertex[4], const float neighborWeight[4], double **outData) 
{ 
    instanceMDC->cbCombine(newVertex, neighborVertex, neighborWeight, outData); 
    printf("scbCombine \n"); 
} 

Et quand j'utilise le tester, "scbCombine \n" est imprimé dans la console !!! Et puis après avoir appelé la fonction CALLBACK, le tesselator appelle le rappel d'erreur avec le message: "need combine callback" (!!)

J'ai déjà deux autres tesselators dans mon application, et ils fonctionnent correctement. Mais le dernier ne le fait pas. J'ai comparé autant que possible le code de celui-ci avec le code de l'autre. Mais je ne vois pas pourquoi ça ne marche pas.

La méthode cbCombine (sans « s » au début) est la suivante:

void MyClass::cbCombine(const double newVertex[3], const double *neighborVertex[4], const float neighborWeight[4], double **outData) 
{ 
    outData = 0; 
} 

Mais le réglage outData à zéro ne peut pas être le problème: je l'ai fait déjà avec l'un des autres tesselators. ..

Je deviens fou ... J'ai déjà passé des heures à cette question

Merci

Répondre

0

Le problème était le zéro, je devais faire ceci:

*outData = new double; // memory-leak, but not as I did it really.