I'v пытались решить утечку памяти в функции обратного вызова GLU путем создания глобальной переменной, но теперь-дус ничего не сделать:Почему это не работает?
GLdouble *gluptr = NULL;
void CALLBACK combineCallback(GLdouble coords[3], GLdouble *vertex_data[4],
GLfloat weight[4], GLdouble **dataOut)
{
GLdouble *vertex;
if(gluptr == NULL)
{
gluptr = (GLdouble *) malloc(6 * sizeof(GLdouble));
}
vertex = (GLdouble*)gluptr;
vertex[0] = coords[0];
vertex[1] = coords[1];
vertex[2] = coords[2];
for (int i = 3; i < 6; i++)
{
vertex[i] = weight[0] * vertex_data[0][i] +
weight[1] * vertex_data[0][i] +
weight[2] * vertex_data[0][i] +
weight[3] * vertex_data[0][i];
}
*dataOut = vertex;
}
в основном вместо того, чтобы делать таНос каждый раз в цикле (таким образом, утечка памяти) im используя глобальный указатель, но это не работает (рисование на экране не работает), что означает, что dataOut не получает данные вершин, на которые указывает мой указатель. Почему использование malloc для указателя, созданного в этой функции, работает иначе, чем глобальная переменная?
Благодаря
* «Это не так 't work "* не является полезным описанием - что не работает? –
в основном, зачем рисовать раньше, но не больше? – jmasterx
Почему здесь есть актерский состав? 'vertex = (GLdouble *) gluptr;'? – kibibu