Hello.

I have a ready code where I manipulate a 3D body - rotate/translate with mouse/keys. it looks like that:

void My DrawCallBack()

{

if (first_time)

glLoadIdentity();

else

glPopMatrix();

retrieve_transformation_delta(parameters…);

delta_transform(parameters…);

draw_body();

glPushMatrix();

}

so with each key pressed or mouse movement/event - the body moves along.

The problem is that the first transformation applied is the delta_transform, then the rest (inherited by glPopMatrx), resulting in body rotating around its own axes, and not around the screen axes.

as a solution I’m trying to retrtieve the delta_transform matrix and reverse the order:

…

glLoadIdentity();

retrieve_delta(…);

delta_transform(…)

glGetDoublev(GL_MODELVIEW_MATRIX,mymatrix_pointer);

glPopMatrix();

reverse_multiply(current and mymatrix);

draw_body();

glPushMatrix();

…

I get access violation error ;

Am I allowed to retrieve and manipulate the matrix directly?

Is there a more elegant way of reversing the order?

Thanks in advance.

Runner.