Example #1
0
        public static void DrawRotatingObject <TPipeline, TCamera>(TPipeline pipeline, RenderEntity[] entitiesApply, TCamera camera, CharRenderBuffer <float> charBuffer) where TPipeline : IPipeline where TCamera : ICamera
        {
            float framerate     = 60f;
            float time          = 6f;
            int   totalFrame    = (int)(framerate * time);
            float angleStep     = JMath.PI_TWO / totalFrame;
            int   frameInterval = (int)(1000f / framerate);
            int   elapsed;

            JTimer timer = new JTimer();

            timer.Start();
            for (int i = 0; i < totalFrame; i++)
            {
                CRenderer.UpdateRenderInfo();
                pipeline.Draw(entitiesApply, camera);
                entitiesApply[0].Transform.Rotation.X += angleStep;
                entitiesApply[0].Transform.Rotation.Z += angleStep;

                elapsed = (int)timer.DeltaMS;
                if (elapsed < frameInterval)
                {
                    Thread.Sleep(frameInterval - elapsed);
                }
                CRenderer.Render(charBuffer);
            }
            timer.Stop();
        }