GLU Tesselator dit: « Il faut combiner rappel » Mais je défini un rappel
-
02-10-2019 - |
Question
J'ai enregistré un rappel à l'aide:
gluTessCallback(tess, GLU_TESS_COMBINE, (GLvoid(*)()) &scbCombine);
Où 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 je l'utilise le tester, "scbCombine \n"
est imprimé dans la console !!! Et puis après avoir appelé la fonction de rappel, la tesselator invoque le rappel d'erreur avec le message: « besoin de combiner rappel » (!!)
Je l'ai déjà deux autres tesselators dans mon application, et ils fonctionnent correctement. Mais le dernier ne le font pas. Je comparais le code de celui-ci, autant que possible avec le code de l'autre. Mais je ne vois pas pourquoi cela ne fonctionne 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 outData
de mise à 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
La solution
Le problème était le zéro, je devais faire ceci:
*outData = new double; // memory-leak, but not as I did it really.