Estou tentando girar o modelo com base na posição do meu clique do mouse. Cada vez que clico no mouse, o ponto de rotação é recalculado, mas depois que giro o modelo e escolho outro ponto de rotação, o modelo muda. Não sei o que há de errado com meu implemento. Se eu precisar fornecer mais informações para receber ajuda, é só me dizer.
Esta é a função render:
non-public void Render()
ClearBufferMask.DepthBufferBit);
GL.MatrixMode(MatrixMode.Modelview);
GL.PushMatrix();
GL.LoadIdentity();
GL.Translate(transX, transY, 0);
GL.Translate(rotatePoint.level);
GL.Rotate(angleX, 0, 1, 0);
GL.Rotate(-angleY, 1, 0, 0);
GL.Translate(-rotatePoint.level);
SetupViewport();
pco.Render();
GL.PopMatrix();
ConfiguraçãoViewport função:
non-public void SetupViewport()
{
int w = glControl1.ClientSize.Width;
int h = glControl1.ClientSize.Top;
GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
float facet = w / (float)h;
float n = scaling;
float left = -n * 0.5f, proper = n * 0.5f, down = -n * 0.5f / facet, up = n * 0.5f / facet;
if (w <= h)
{
GL.Ortho(-1, 1, -aspect, facet, -1, 1);
}
else
{
GL.Ortho(left, proper, down, up, -10.0f, 10.0f);
}
GL.Viewport(0, 0, w, h);
}
É quando eu giro em torno do estado authentic:
O modelo mudou após a rotação, mas quando eu giro o modelo de volta ao estado authentic, ele para de mudar: