Question

J'ai enregistré un rappel à l'aide:

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 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

Était-ce utile?

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.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top