Witam. Jestem początkującym programistą, jeśli chodzi o directx i c#. Chciałbym wyświetlić prosty trójkąt i zastosować na nim jakąś prostą transformację (np rotację).
Najpierw robię formularz z palca, następnie ustawiam dla niego urządzenie directx. Mam dwa problemy. Jednym z nich jest to że metoda OnPaint nie jest w normalnym trybie wywoływana, przez co scena się nie odświeża. Metoda jest wywoływana gdy wyjadę oknem poza ekran monitora i faktycznie trzeba odrysować okno.
Zastosowałem np po wciśnięciu klawisza Invalidate, ale pojawiają się takie dziwne pasy. Jak to lepiej / odpowiednio zrobić?
Drugim problemem jest to że mój trójkąt się nie obraca, a stosuję rotację. Stosuję vertexy positioncolored. Za wszystkie pomocne odpowiedzi dziękuję :)
device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, 800 / 600, 1f, 50f);
device.Transform.View = Matrix.LookAtLH(new Vector3(0, 0, 30), new Vector3(0, 0, 0), new Vector3(0, 1, 0));
device.RenderState.Lighting = false;
device.RenderState.CullMode = Cull.None;
device.Clear(ClearFlags.Target, Color.Black, 1.0f, 0);
device.BeginScene();
device.Transform.World = Matrix.Identity;
device.Transform.World.RotateZ(angle);
device.Transform.World.Translate(new Vector3(angle, angle, angle));
device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices);
device.EndScene();
device.Present();