Я программирую свое первое 3D-приложение на OpenGL, и я застрял в поворотах. То, что я хочу, это вращать вид с помощью мыши, как в программе CAD. Вращение работает хорошо, но я не могу решить, как обновить текущую матрицу без ее сброса. Первое вращение кажется хорошим, но когда я собираюсь сделать второе, текущая матрица сбрасывается, и мне нужно начинать вращения снова. Я не могу накапливать вращения, и это именно то, что я хочу, чтобы начать второй, где я закончил первый. Это код:
AngYPrev +=(AngYNow * Math.PI / 180);
AngXPrev +=(AngXNow * Math.PI / 180);
Matrix4d MRx = new Matrix4d(
1, 0, 0, 0,
0, Math.Cos(AngXPrev), -Math.Sin(AngXPrev), 0,
0, Math.Sin(AngXPrev), Math.Cos(AngXPrev), 0,
0, 0, 0, 1);
Matrix4d MRy = new Matrix4d(
Math.Cos(AngYPrev), 0, Math.Sin(AngYPrev), 0,
0, 1, 0, 0,
-Math.Sin(AngYPrev), 0, Math.Cos(AngYPrev), 0,
0, 0, 0, 1);
MAcc = Matrix4d.Mult(MRx, MRy);
GL.LoadMatrix(ref MAcc);
AngYPrev = 0;
AngXPrev = 0;