OPenGL сохранить текущую матрицу - PullRequest
0 голосов
/ 06 марта 2020

Я программирую свое первое 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;
...